답변:
timeout
명령으로 실행할 수 있습니다 .
timeout - run a command with a time limit
Synopsis
timeout [OPTION] NUMBER[SUFFIX] COMMAND [ARG]...
timeout [OPTION]
Description
Start COMMAND, and kill it if still running after NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
추신. 동기화 프로세스에 시간이 너무 오래 걸리면 데이터 동기화를위한 다른 접근 방식을 고려하고 복제를 차단할 수 있습니다.
최대 17 시간의 동면 후에도 동기화를 쉽게 계속할 수 있다면
0 0 * * * killall -CONT -g sync.sh || /usr/local/bin/sync.sh
7 0 * * * killall -STOP -g sync.sh
동기화가 처음부터 다시 시작하는 것을 선호하는 경우
0 0 * * * exec /usr/local/bin/sync.sh
7 0 * * * killall -TERM -g sync.sh
동기화 또는 하위 작업이 신호를 무시하지만 잔해가 남지 않는 경우
0 0 * * * exec /usr/local/bin/sync.sh
7 0 * * * killall -KILL -g sync.sh
killall
∈ psmisc
0 0 * * * timeout 7h /usr/local/bin/sync.sh
거의 비슷한 killall -TERM
변형을 사용합니다.
또한 cron을 사용하여 지정된 시간에 해당 서비스 또는 스크립트를 "중지"또는 "킬"합니다.
먼저 크론 작업을 작성하여 작업 또는 스크립트를 실행하십시오. (이름이있는 작업을 죽일 다른 크론을 쉽게 실행할 수 있습니다
sudo pkill wget
)
둘째, 다음과 같은 결과로 유용하고 읽기 쉬운 형식으로 crontab 작업을 실행하려고합니다.
ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"
첫 줄에 다음과 같이 나타납니다.
1108 1108 cron
4288 1108 \_ CRON
4289 4289 \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290 4289 \_ /bin/bash /path/to/my/crontab/script1.sh
4295 4289 \_ /usr/bin/wget LINK
첫 번째 열은 PID이고 두 번째 열은 세션 ID이며 세 번째 열은 cron에서 시작한 명령입니다. 세션 ID를 사용하여 특정 크론 태스크와 관련된 모든 프로세스를 종료 할 수 있으므로 위 예에서 세션 ID 4289를 종료해야합니다.
pkill -s 4289
pkill을 스크립트에 넣고 이것을 cron으로 실행해야합니다.