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