Bash 脚本能够手动运行,但 cron 不起作用。 + Ubuntu 16.04

Bash 脚本能够手动运行,但 cron 不起作用。 + Ubuntu 16.04

环境:- 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 -eas user添加 cron 作业john,则该作业将以 user 身份运行john,而不是以 root 身份运行。

要编辑 root 的 cron 作业,请使用sudo crontab -e.

从交互式命令行运行命令和从 cron 作业运行命令的区别在于环境(环境变量、当前工作目录等)可能不同。理想情况下,cron 作业应该明确地将所需的变量设置为正确的值。例如,PATH如果从非标准路径使用第 3 方实用程序,从 cron 执行的脚本可能需要添加一些变量路径,并且可能需要cd进入正确的目录来设置脚本其余部分的工作目录(例如,在您的示例中,当您运行 时,您位于正确的目录中./CC-test)。

相关内容