setlock을 사용하여 다중 시동 방지 기능을 간단하게 실현하다
이때 회사 선배는
setlock
이 데몬툴스에 첨부된 스크립트를 사용하면 잠금 파일을 사용하여 다중 시작 방지 기능을 간단하게 설치할 수 있기 때문에 사용 방법의 노트를 남길 수 있다고 알려주었다.견본
예를 들어
sleeping.rb
, 10초 sleep "wake up!"간단한 스크립트입니다.sleeping.rb
sleep 10
puts "wake up!"
setlock을 사용하면sleeping입니다.rb의 다중 시동을 방지할 수 있습니다./var/lock/vagrant에 쓰기 및 읽기 권한이 있는 경우)
$ setlock -Xn /var/lock/vagrant/sleeping.lock ruby sleeping.rb
이 때 다른 알림을 시작하는 등 같은 명령으로 sleeping합니다.rb를 계속 시작할 때 다음 오류를 토하고 스크립트가 끝납니다.$ setlock -Xn /var/lock/vagrant/sleeping.lock ruby sleeping.rb
setlock: fatal: unable to lock /var/lock/sleeping.lock: temporary failure
또한 N
옵션을 사용하면 스크립트를 즉시 끝내지 않고 시작 중인 과정이 끝난 후에 실행할 수 있습니다.$ setlock -XN /var/lock/vagrant/sleeping.lock ruby sleeping.rb
# (現在起動中のスクリプトが終了するのを待ってから実行される)
wake up!
구조
setlock은 첫 번째 매개 변수에 지정된 파일을 잠그고 다음 매개 변수에 지정된 명령의 시작을 제어하는 기능을 간단하게 제공합니다.
위의 견본에서 잠금
/var/lock/vagrant/sleeping.lock
, 이 파일이 잠긴 동안 실행하지 않음 ruby sleeping.rb
(또는 실행을 기다림).따라서 setlock 제1 매개 변수에서 지정한 잠금 파일이 다르면sleeping.rb가 다중으로 시작됩니다.
이 상황에서는 슬리핑입니다.rb 다중 부팅
# /var/lock/vagrant/sleeping.lockを使う
$ setlock -Xn /var/lock/vagrant/sleeping.lock ruby sleeping.rb
# /var/lock/vagrant/sleeping.lock2を使う
$ setlock -Xn /var/lock/vagrant/sleeping.lock2 ruby sleeping.rb
이번에는 cron이 정기적으로 실행하는 스크립트에 다중 시작 방지 기능을 설치하고 싶어서 setlock이 매우 편리합니다.setlock 옵션
네 가지 옵션만 있음
탭 페이지에서 항목 작성 또는 편집
함의
-n
지정한 파일이 잠겼을 때 명령 실행을 포기하고 종료합니다
-N
기본 옵션입니다.지정한 파일이 잠겨 있으면 새 파일을 잠글 수 있을 때까지 기다립니다
-x
파일을 잠글 수 없거나 만들 수 없는 경우 코드 0으로 종료
-X
기본 옵션입니다.파일을 잠글 수 없거나 생성할 수 없는 경우 0야드가 아닌 오류 메시지가 표시됩니다.
나는 어떤 옵션을 사용하느냐가 스크립트의 요구에 달려 있다고 생각한다.
자신의 상황에서 잠긴 상태에서 0이 아닌 것으로 끝났습니다. 다음cron이 실행되기를 기다리고 싶어서 "-Xn"옵션을 사용했습니다.
느끼다
setlock의 존재를 모르고 코드를 쓸 때 실행된 스크립트에'자물쇠 파일 만들기, 배타적 자물쇠 추가, 자물쇠가 잠긴 상태에서 오류 메시지 뱉기 끝'이라는 비본질적인 처리가 포함되어 코드의 전망이 나빠졌다.
setlock을 사용하여 실행 스크립트에서 본질적인 처리만 기술하고 잠금 처리는 코드 밖(명령줄)을 놓칠 수 있기 때문에 코드가 깔끔하고 좋습니다. 다중 시동 방지 기능 자체도 스스로 설치하지 않고 시든 기술인 데몬툴스에 맡길 수 있어 안심할 수 있습니다.
[참고] 데몬툴스의 설치
참고로 본고는 데몬툴스의 설치 방법(setlock은 데몬툴스에 포함됨)을 소개했다.
yum은 설치할 수 없을 것 같아서 원본에서 설치합니다.
cr.yp.to/daemontools/install.html의 설치 절차를 참조하십시오.
$ sudo su -
$ yum install wget
# /packageディレクトリの作成と移動
$ mkdir -p /package
$ chmod 1755 /package
$ cd /package
# daemontoolsのソースを取得
$ wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
$ tar -xpf daemontools-0.76.tar.gz
$ rm -f daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76/
# パッチを当てる
$ wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
# 接続できない場合コチラなら繋がるかも => http://djbware.csi.hu/patches/daemontools-0.76.errno.patch
$ patch -p1 < daemontools-0.76.errno.patch
# インストール
$ package/install
설치 확인 도움말 보기$ setlock --h
setlock: usage: setlock [ -nNxX ] file program [ arg ... ]
Reference
이 문제에 관하여(setlock을 사용하여 다중 시동 방지 기능을 간단하게 실현하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mogulla3/items/0a955196c524712f48ba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)