다른 작업을 실행하기 전에 하나의 크론 작업을 어떻게 종료합니까?

다른 작업을 실행하기 전에 하나의 크론 작업을 어떻게 종료합니까?

내 디지털 액자 에는 crontab -u pi -e두 가지 프로세스가 있습니다.

첫 번째 전화feh재부팅하면 슬라이드 쇼가 시작됩니다.

@reboot bash /home/pi/ledslide1.sh >> /home/pi/logs/slidelog 2&>1

그런 다음 특정 시간에 다른 인스턴스를 시작해야 합니다.

15 8 * * * bash /home/pi/ledslide2.sh >> /home/pi/logs/slidelog 2&>1
15 9 * * * bash /home/pi/ledslide3.sh >> /home/pi/logs/slidelog 2&>1
...

하지만 feh슬라이드 쇼가 반복해서 실행되고 있습니다. 그런 식으로 프로세스를 먼저 종료해야 겠죠? timeout재부팅이 언제 발생하는지 모르기 때문에 작동하지 않습니까?

답변1

ledslide.sh 스크립트에서 pkill -9 fehkill 을 사용하십시오 feh. PID 등을 추적할 필요가 없습니다. pkill주어진 이름을 가진 프로세스를 검색하고 종료하는 데 사용됩니다. 나는 manpagefor pkill및 를 읽을 것을 제안합니다 pgrep.

답변2

이것은 지금까지 나에게 효과적이었습니다.

@reboot bash /home/pi/ledslide1.sh >> /home/pi/logs/slidelog 2&>1
15 8 * * * pkill -9 feh && bash /home/pi/ledslide2.sh >> /home/pi/logs/slidelog 2&>1

.sh 파일이 호출 feh되어 백그라운드에 배치됩니다. 프로세스 pkill -9 [KEYWORD]를 닫습니다 feh.

관련 정보