我有一个问题。我想在上午10点到下午4点之间运行我的脚本。意思是我想在上午10点开始它并且如果它仍在运行则在下午4点被杀死。 如果我使用cron * 10-15 *** - 它是否意味着该过程将在16处被杀死,或者只意味着它只能在上午10点到下午4点之间启动?
谢谢!
答案 0 :(得分:1)
将脚本的形式更改为类似服务的内容:
#!/bin/bash
PID_FILE=/var/run/my_script_pid
function work {
# Do your stuffs here.
...
}
function start {
work "$@" &
disown
echo "$!" > "$PID_FILE"
}
function stop {
kill "$(<"$PID_FILE")"
}
"$@"
然后在cron中以/path/to/your/script.sh start args
运行您的脚本。
在cron中将其作为/path/to/your/script.sh stop
停止。
脚本可以通过检查和填充来改进并变得更加坚固,但是你得到了这个概念。
答案 1 :(得分:0)
答案 2 :(得分:0)
Cron没有杀死工作,它只创造了它们。考虑到cron line,cron将在上午10点到下午3点之间每小时开始一项新工作。如果要限制进程的运行时间,则需要捕获PID并在间隔后将其终止 - 所以在脚本中就是这样的,
pid=$$ (sleep 18000 && kill $pid) &
会在18000秒(或5小时)后终止该过程。
答案 3 :(得分:0)
如果您只想在上午10点开始编写脚本并在下午4点将其删除,则可以在自己的crontab
(或类似于/etc/crontab
)中插入两个条目,如下所示:
user@linubox:~$ crontab -l
# m h dom mon dow command
00 10 * * * /PATH/TO/MY_SCRIPT
00 16 * * * kill `ps ax | grep MY_SCRIPT | head -1 | awk '{print $1}'`
要以这种方式杀死的MY_SCRIPT
,必须是进程列表中的唯一名称。
HTH,
马塞罗