모두가 Linux crontab을 배우도록 하세요

藏色散人
풀어 주다: 2021-07-10 15:39:42
앞으로
2257명이 탐색했습니다.

crontab

cron을 사용할 때 특정 명령을 실행하는 데 시간이 너무 오래 걸리기 때문에 명령을 다시 시작할 때 여러 프로세스가 발생하는 경우가 많습니다.
다음과 같은 무리를 사용할 수 있습니다.

*/1 * * * * flock -xn /opt/app/nginx/test_repo/app/tasks/checkPaymentUrl.lock -c 'sudo -u apache php /opt/app/nginx/test_repo/app/console Payment checkPaymentUrl >> /dev/null 2>&1'
로그인 후 복사

여러 프로세스가 동일한 데이터에 대해 작업을 수행할 수 있는 경우 이러한 프로세스는 데이터 손상을 방지하기 위해 다른 프로세스도 작동하지 않도록 해야 합니다.

일반적으로 이러한 프로세스는 "잠금 파일"을 사용합니다. 즉, 해당 파일의 존재가 감지되면 동일한 데이터를 운영하는 프로세스로 간주됩니다. 일하고 있는. 문제는 프로세스가 실수로 종료되고 잠금 파일이 지워지지 않은 경우 사용자가 수동으로만 정리할 수 있다는 것입니다.
Parameter

-s,--shared:获取一个共享锁,在定向为某文件的FD上设置共享锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置独占锁的请求失败,而其他进程试图在定向为此文件的FD上设置共享锁的请求会成功。
-x,-e,--exclusive:获取一个排它锁,或者称为写入锁,为默认项。
-u,--unlock:手动释放锁,一般情况不必须,当FD关闭时,系统会自动解锁,此参数用于脚本命令一部分需要异步执行,一部分可以同步执行的情况。
-n,--nb, --nonblock:非阻塞模式,当获取锁失败时,返回1而不是等待。
-w, --wait, --timeout seconds:设置阻塞超时,当超过设置的秒数时,退出阻塞模式,返回1,并继续执行后面的语句。
-o, --close:表示当执行command前关闭设置锁的FD,以使command的子进程不保持锁。
-c, --command command:在shell中执行其后的语句。
로그인 후 복사


crontab은 반복 실행을 방지하기 위해 Flock을 사용합니다

0 23 * * * (flock -xn ./test.lock -c "sh /root/test.sh") #-n 为非阻塞模式
로그인 후 복사

관련 권장 사항: "Linux 비디오 튜토리얼"

위 내용은 모두가 Linux crontab을 배우도록 하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿