Что касается ответа тердона, pgrep -f testing.py
никогда не вернет false в соответствии с комментариями в здесь:
I think the issue is that cron spawns a shell to run your command, and the arguments of that shell are matched by pgrep since you are using -f
Для ответа Мэтта pgrep -f testing.py
бесполезен, поскольку pgrep python
соответствует любому работающему скрипту Python. Итак, если два скрипта Python cronjob, второй cronjob никогда не запустится.
И тут я нашел решение pgrep -f testing.py
в комментарии здесь:https://askubuntu.com/questions/1014559/running-pgrep-in-a-crontab?noredirect=1&lq=1
Мой cron для запуска двух Python-скриптов:
* * * * * pgrep -f '^/usr/bin/python36 /home/ec2-user/myscript1\.py' || nohup /usr/bin/python36 /home/ec2-user/myscript1.py
0 * * * * pgrep -f '^/usr/bin/python36 /home/ec2-user/myscript2\.py' || nohup /usr/bin/python36 /home/ec2-user/myscript2.py
Я нашел ответ на Arch Wiki .
Решение состоит в том, чтобы использовать следующий фрагмент кода для dhcpcd.
[Service]
ExecStart=
ExecStart=/usr/bin/dhcpcd -b -q %I
Флаг-b запускает dhcpcd в фоновом режиме , а -q делает его "тихим", чтобы его вывод не загрязнял терминал (, за исключением ошибок и предупреждений ).
По умолчанию dhcpcd имеет тип forking
и вызывается systemd с флагом -w. Флаг -w предотвращает его разветвление до тех пор, пока он не получит IP, а поскольку он имеет Type=forking, он не будет работать в фоновом режиме и продолжит процесс загрузки до тех пор, пока это не произойдет, что занимает несколько секунд. Это объясняет ~10-секундную задержку загрузки. Немедленно установив фон с помощью -b, мы предотвратим эту задержку.