我在 crontab 中为用户 uni-01 每 10 分钟运行一次 test.sh 脚本
crontab -l
*/10 * * * * /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
当我使用ps -eF
命令时,test.sh 脚本以 开始/bin/sh -c /bin/bash
,第二个以/bin/bash
命令开始。如何避免运行该/bin/sh -c /bin/bash
命令?
root 6007 946 0 12555 2932 1 09:42 ? 00:00:00 /usr/sbin/CRON -f
uni-01 6011 6007 0 1127 756 0 09:42 ? 00:00:00 /bin/sh -c /bin/bash /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
uni-01 6019 6011 0 3164 3088 1 09:42 ? 00:00:00 /bin/bash /home/uni-01/test.sh
Ubuntu 版本是 16.04.1 LS
答案1
您可以尝试包括舍邦 #!/bin/bash
在 的开始处test.sh
。
这会在脚本内部将 bash 设置为脚本的 shell,而无需在 crontab 行中明确说明。
答案2
正如解释的那样如何更改 cron shell(sh 到 bash)?,你可以将默认 shell 更改为bash
:
SHELL=/bin/bash
这个命令必须放在你的 cron 行之前的任何位置,在你的情况下:
SHELL=/bin/bash
*/10 * * * * /home/uni-01/test.sh > /home/uni-01/data/_d.log 2>&1
不用说,这会影响其后的每个 cron 行,如果需要,您可以用一行将其改回来- 或者只是在 crontab 末尾SHELL=/bin/sh
建立一个部分。bash