Scheduling
在指定時間停止 atd 作業
我正在嘗試安排在晚上下載。我創建了一個
atd
在凌晨 2 點開始下載腳本的作業。現在,如果它仍在執行,我想在早上 7 點停止相同的工作。我現在做的只是shutdown -h 7:00
。是否可以在指定時間停止atd
工作?
我沒有看到
at
允許您指定停止時間的機制。我會at
在早上 7 點安排另一個工作,檢查這些工作中的任何一個是否仍在執行並殺死它們。
At
作業使用 shell 解釋器執行(在 Linux 上,通常是/bin/sh
)。這意味著您要作為at
作業執行的任何命令都可以通過要執行該命令的 shell 的 PID 號進行跟踪。您可以使用特殊的 shell 變數簡單地擷取此 PID$$
。您可以將其保存到文件中(單引號是強制性的,以免在目前會話 shell 中擴展它):at 'echo $$ > /var/run/my_at_job.pid; your_command; rm /var/run/my_at_jon.pid' | at TIME_SPEC
稍後,在另一個
at
作業中,您可以終止該作業及其所有衍生的子程序(you_command
):if [ -r /var/run/at_job.pid ]; then for PID in $(ps --ppid `cat /var/run/at_job.pid` -o pid | sed -e '1d'); do kill $PID done fi