环境:- Ubuntu 18.04
我编写了一个 C 程序,并尝试与端口通信并获取一些数据并将其转储到一个文件中。然后我创建了一个 bash 脚本并添加了这个 C 程序并期望以多个时间间隔运行。
我可以毫无问题地运行这个 bash 脚本。我以 root 身份运行。
<<snip>>
#!/bin/bash
interval=$1
time=$2
./CC-test $interval $time
<<snip>>
我想知道通过 cron 调用某些命令是否存在权限委托问题?或者我们是否需要告诉 cron 以管理权限执行?无论如何,我以 root 身份运行 cron,如果有其他需要,我不这么认为。
作为测试,我只是在 shell 脚本中尝试了两个命令,如下所示
#!/bin/bash
date >> test
fdisk -l >> test
即使在这里,我也可以手动运行,甚至两个输出都可以毫无问题地打印。在这里,我把它放在 cron 中,在测试文件中打印的“date”命令输出上。
请对此发表一些看法。
答案1
克罗恩守护进程始终以 root 身份运行。克罗恩工作将以他们所属的 cronjob 的用户身份运行。如果您使用crontab -e
as user添加 cron 作业john
,则该作业将以 user 身份运行john
,而不是以 root 身份运行。
要编辑 root 的 cron 作业,请使用sudo crontab -e
.
从交互式命令行运行命令和从 cron 作业运行命令的区别在于环境(环境变量、当前工作目录等)可能不同。理想情况下,cron 作业应该明确地将所需的变量设置为正确的值。例如,PATH
如果从非标准路径使用第 3 方实用程序,从 cron 执行的脚本可能需要添加一些变量路径,并且可能需要cd
进入正确的目录来设置脚本其余部分的工作目录(例如,在您的示例中,当您运行 时,您位于正确的目录中./CC-test
)。