我有一个简单的脚本,它回应了for循环的值。 我使用cron作业调用同一个,然后运行grep命令它显示两个实例。
脚本::
#!/bin/bash
for i in {1..999999}
do
echo "Welcome $i times"
done
Cron Command ::
* * * * * /home/amit/Desktop/crontest/test.sh > /home/amit/Desktop/crontest/null 2 >&1.
ps Grep命令::
$ ps -ef | grep test
amit 5853 5852 0 23:28 ? 00:00:00 /bin/sh -c /home/amit/Desktop/crontest/test.sh > /home/amit/Desktop/crontest/null 2>&1
amit 5854 5853 99 23:28 ? 00:00:07 /bin/bash /home/amit/Desktop/crontest/test.sh 2
我的问题是::
这真的是一个两个实例,或者它只是一个如何运行cron作业的方式。
答案 0 :(得分:3)
Cron隐含地运行sh -c
给出的行。
如果该行启动另一个shell(没有将其识别为唯一运行的命令并隐式地使其成为exec
操作,则优化一些但不是所有shell将隐式执行),然后是,您有两个shell
要让您的第一个shell exec
成为第二个,在内存中替换其图像并继承其PID,请考虑在您的cron作业中使用以下行:
exec /home/amit/Desktop/crontest/test.sh >/home/amit/Desktop/crontest/null 2>&1