Команда после точки с запятой не выполняется в Crontab?

вот мой кронтаб:

42 17 * * 1-5 /bin/pkill -f 'MyExecutable.exe' ;  touch /tmp/here.log

и по /var/log/cron Она побежала:

May 22 17:42:01 server1 CROND[326732]: (myuser) CMD (/bin/pkill -f 'MyExecutable.exe' ;  touch /tmp/here.log)

и процесс MyExecutable.exe умер. Однако,here.log не был создан в /tmp.

если я вручную запустить его под myuser:

touch /tmp/here.log

файл создан успешно (следовательно, не вопрос разрешения наверняка). Я даже пытался двигаться touch в отдельную cronjob в crontab, и это сработало.

почему touch после точка с запятой?

3
задан Kamil Maciorowski
22.11.2022 15:42 Количество просмотров материала 2422
Распечатать страницу

2 ответа

это может быть растиражирована

sh -c 'pkill -f "MyExecutable.exe" ; touch /tmp/here.log'

Cron выполняет вашу команду, передавая ее в оболочку (sh или другое), настолько эффектно оно очень подобен вышеуказанной линии. Независимо от того, какие MyExecutable.exe работает или нет, pkill -f матчи (также) снаряд и убивает его, прежде чем он работает touch. Это потому что

шаблон обычно сопоставляется только с именем процесса. Когда -f установлено, полная командная строка используемый.

(источник: man 1 pkill)

возможные решения:

  1. Если вам не нужен -f, просто брось это:

    42 17 * * 1-5 /bin/pkill 'MyExecutable.exe' ;  touch /tmp/here.log
    
  2. Если вам нужен -f, run touch до pkill:

    42 17 * * 1-5 touch /tmp/here.log ; /bin/pkill -f 'MyExecutable.exe'
    
1
отвечен Kamil Maciorowski 2022-11-23 23:30

этот вопрос относится к этому:

последовательное выполнение двух команд в задании cron?

вы должны разделить две команды&&, вместо ;

0
отвечен j1b3 2022-11-24 01:47

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх