如何避免 /bin/sh -c /bin/bash 和 /bin/bash 对同一个 shell 脚本运行?

如何避免 /bin/sh -c /bin/bash 和 /bin/bash 对同一个 shell 脚本运行?

我在 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

相关内容