通过cron作业调用时的两个Shell脚本实例

时间:2016-02-23 18:14:50

标签: bash cron

我有一个简单的脚本,它回应了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作业的方式。

1 个答案:

答案 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