Как запустить dhcpcd в фоновом режиме при загрузке?

Что касается ответа тердона, 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

1
08.12.2019, 23:34
1 ответ

Я нашел ответ на 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, мы предотвратим эту задержку.

1
27.01.2020, 23:40

Теги

Похожие вопросы