bash cronjob продовжує створювати новий процес, хоча моя if
заява говорить про те, що він не запускається, якщо процес або порт вже є ...
кішка / тощо / crontab
*/1 * * * * root /opt/script.sh
також спробував:
* * * * * /opt/script.sh
скрипт відкриває порт, тому я спробував перевірити номер порту, lsof
щоб визначити, чи виконується сценарій.
#!/bin/bash
port='1234'
if ! lsof -i | grep -o $port; then
command ...
fi
але це не працювало, кожні 60 секунд виконується інший script.sh, і якимось чином є кілька процесів, що займають порт 1234. тому я спробував використовувати ps
замість lsof.
#!/bin/bash
c=$(sudo ps aux | grep -o '[s]cript\.sh')
if [[ $c != 'script.sh' ]]; then
command ...
fi
але це теж не працює. що тут відбувається? можливо, я нерозуміння того, як працюють кронштейни, тому що я не можу зрозуміти, чому оператори if не працюють і не дозволяють команді виконувати знову і знову.
Я використовую ubuntu 16.04, повністю оновлений.