Saya memiliki skrip Shell berikut. Ia memeriksa apakah skrip python berjalan atau tidak, dan jika tidak, skrip python akan dimulai. Ketika saya menjalankannya dari baris perintah seperti ./crontab.sh ia bekerja bahkan dari tempat lain seperti MaskRCNN/crontab.sh. Tetapi ketika saya memasukkannya ke dalam crontab hanya gema yang berfungsi.

#!/bin/bash
out=$(ps aux | grep 'python train/train.py' | rev | cut -d ' ' -f 1| rev | wc -l)
if [ $out -eq "2" ];then
    echo "2 processes" >> /tmp/testing.txt
else
    echo "1 process" >> /tmp/testing.txt;
    cd /hdd1/Alex/testMaskRCNN_human_bodyparts/MaskRCNN_body;
    CUDA_VISIBLE_DEVICES=0 /usr/bin/python train/train.py
fi

Crontabnya seperti ini:

* * * * * /hdd1/Alex/testMaskRCNN_human_bodyparts/MaskRCNN_body/crontab.sh

Saya harap ada cukup detail. Terima kasih

0
Florentin Alexandru Iftimie 9 Agustus 2017, 15:58

2 jawaban

Jawaban Terbaik

Saya berhasil men-debugnya dengan menambahkan operator &>>.

`(/usr/bin/python /hdd1/Alex/testMaskRCNN_human_bodyparts/MaskRCNN_body/train/train.py &>> /tmp/testing.txt)`

Dan saya menemukan bahwa itu melewatkan ekspor:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/

Skrip akhir:

#!/bin/bash
out=$(ps aux | grep '/usr/bin/python /hdd1/Alex/testMaskRCNN_human_bodyparts/MaskRCNN_body/train/train.py' | rev | cut -d ' ' -f 1 | rev | wc -l)
if [ $out -eq "2" ];then
    echo "2 processes" >> /tmp/testing.txt
else
    echo "1 process" >> /tmp/testing.txt
    export CUDA_VISIBLE_DEVICES=0
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64/
    `(/usr/bin/python /hdd1/Alex/testMaskRCNN_human_bodyparts/MaskRCNN_body/train/train.py &>> /tmp/testing.txt)`
fi
0
Florentin Alexandru Iftimie 10 Agustus 2017, 15:39

Coba ubah train/train.py ke jalur lengkap...

1
beliy 9 Agustus 2017, 13:03