![关于在 crontab 上调度的 shell 脚本中执行 python 程序](https://linux22.com/image/67030/%E5%85%B3%E4%BA%8E%E5%9C%A8%20crontab%20%E4%B8%8A%E8%B0%83%E5%BA%A6%E7%9A%84%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E6%89%A7%E8%A1%8C%20python%20%E7%A8%8B%E5%BA%8F.png)
我有一个关于 crontab 的问题。我有一个名为 checker.sh 的脚本,我想安排它每分钟运行一次:
* * * * * sh /home/pi/checker.sh
我这里有脚本:
这个脚本的概念来自这里: Linux 脚本检查进程是否正在运行并对结果采取行动
问题是:每当我结束 python 进程来检查是否checker.sh
可以运行 python 脚本时,它都不起作用。我不知道问题出在哪里。我尝试在脚本本身上将 python 的路径名更改为 /usr/bin/pythonchecker.sh
但仍然不起作用。
我希望有人能解决这个问题。
答案1
在 crontab 中使用完全限定的路径。
/bin/sh /home/pi/checker.sh
答案2
您在 shell 脚本中指定了 bash,然后尝试在 crontab 中使用 sh 调用脚本。实际上不需要在 crontab 中指定 shell,因为您在 shebang 中指定了它,所以这应该可以正常工作:
* * * * * /home/pi/checker.sh
答案3
尝试使用 cd 和完整路径显式导航到 shell 脚本本身内的目录。我有一个类似的问题并通过这样做解决了它。例如,在脚本顶部#!/bin/bash
放置:
cd /home/pi/Some_Directory`
# the rest of your script
答案4
这似乎是一个相对较老的问题,但我相信问题出在标题(舍邦)。您的脚本具有以下标头:
#! /bin/bash
然而,它应该是:
#!/bin/bash
也就是说,#!
和之间没有空格/bin/bash
。我以前也遇到过这种情况,删除空格就解决了。