nfs가 마운트되기 전에 실행되는 Crontab


9

Cronjob @reboot를 실행하면 nfs 공유에 해당 파일이 존재하지 않습니다.

@reboot python /abs/path/to/script.py

시작시 crontab의 메일이 "더 많거나 적습니다"

/usr/bin/python can't open file "/abs/path/to/script.py": [Error No. 2] No such file or folder.

스크립트는 문제없이 명령 줄에서 실행할 수 있습니다.
이론은 마운트가 실행되기 전에 cronjob이 실행되고 있다는 것입니다.
질문들.

  1. 이 이론이 맞습니까?
  2. 드라이브가 장착 될 때까지 작업을 강제로 중단시키는 방법이 있습니까? .... 명령으로 잠을 자지 않는 것 외에. ;) 나는 이미 그것을 시도했지만, 그것은 맞았다. 그리고 100 % 빠르게 실행하려면 스크립트가 필요하다.

2
어떤 배포판을 사용하고 있습니까?
Sven

답변:


16

당신이 사용할 수있는 마운트 지점 당신이 당신의 명령 예를 실행하기 전에이 자리를 차지하게 장착하기 위해 명령을 (가정 / 지점 마운트되어 ABS)

#!/bin/bash
while true
do
    if mountpoint -q /abs
        then
            /usr/bin/python /abs/path/to/script.py
            break
        fi
    sleep 10
done

3
+1 들어 본 적이 없습니다 mountpoint-이것은 매우 유용합니다!
Sven

@SvenW 여기도 마찬가지입니다. 나는 이제 이것으로 소수의 스크립트를 업데이트하고 있습니다.
Aaron Copley

시스템을 재부팅하는 동안이 옵션을 응답으로 선택하면 nic이 시스템을 마운트 할 준비가되었는지와 nic이 준비되기 전에 파일 시스템을 마운트하려고 시도하는 것도 혼란 스러울 수 있습니다.
Rusty Weber

4

네트워킹 후 cron이 시작된 후 문제가 무엇인지 잘 모르겠습니다. (Red Hat 및 파생 상품 적어도.) 당신의 마운트에 있습니까 /etc/fstab_netdev옵션이나 다른 곳?

시작할 때 무언가를 실행하는 표준 방법은에 포함시키는 것입니다 /etc/rc.local. 네트워크가 초기화되고 다른 모든 서비스가 시작된 후에 실행됩니다. (원격 파일 시스템 마운트 포함)

(또는 리터럴 재부팅 후에 만 ​​스크립트를 실행해야하는 이유가 있습니까?)


예, 공유는 fstab에 마운트되어 있습니다. 우분투에서 실행 중 이었으므로 네트워킹이 실행되지 않았을 수 있습니다. etc / rc.local이 가장 좋은 해결책 인 것처럼 보이지만 @restart가 crontab에 있으면 작동해야한다고 가정합니다.
Rusty Weber

1

다음은 몇 가지 아이디어입니다.

  1. NFS가 마운트되어 있는지 확인하십시오. 그렇지 않은 경우 마운트 한 후 스크립트를 실행하십시오.

    [ ! -f /abs/path/to/script.py ] && mount -t nfs device dir && python /abs/path/to/script.py

  2. start()NFS init 스크립트 기능으로 스크립트를 실행하십시오 .

    echo -n $"Starting NFS mountd: "
    daemon rpc.mountd $RPCMOUNTDOPTS
    RETVAL=$?
    echo
    [ $RETVAL -ne 0 ] && exit $RETVAL || python /abs/path/to/script.py
    

1

파이썬 스크립트를 실행할 수 있는지 확인하십시오. 마운트 포인트가 올라 왔는지 확인하기 위해 로컬 스토리지에 저장된 스크립트로 랩핑해야합니다.

다음과 같은 것 (경고 의사 코드) :

while (!ScriptExists && ErrorCount < 10)
do
    mount /my/mount/point
    sleep 10
    ErrorCount++
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.