Добавление Crontab не работает

bash-4.1$ cat file
1.351364711.103.7319660.2010-01-01 00:00:00
1.345529841.103.7372875.2010-01-01 00:00:49
1.342955629.103.7455272.2010-01-01 00:01:42
1.339694956.103.7520503.2010-01-01 00:02:28

bash-4.1$ awk -F. '{print $NF,$1"."$2,$3"."$4}' OFS=, file
2010-01-01 00:00:00,1.351364711,103.7319660
2010-01-01 00:00:49,1.345529841,103.7372875
2010-01-01 00:01:42,1.342955629,103.7455272
2010-01-01 00:02:28,1.339694956,103.7520503
1
09.07.2017, 14:29
2 ответа

Скорее всего, ваша вторая попытка верна, но ваше ожидание неверно.

Давайте рассмотрим его по частям:

crontab -l

перечисляет все существующие записи для crontab текущего пользователя.

echo "1 * * * * /usr/bin/firefox"

просто снова печатает эту строку. Затем эти две команды группируются в подоболочке, а общий вывод направляется в

crontab -

Таким образом, crontab перезаписывается тем, что поступает через стандартный ввод, который в данном случае представляет собой старый crontab плюс новую запись.

Как вы сказали, он добавляется в файл crontab. И, если запущен демон cron, команда будет выполняться каждую минуту.

Так почему же вы не видите окно Firefox каждую минуту? -Поскольку conrjob запускается в другой оболочке ниже демона cron, который не имеет доступа к вашему X-сеансу, поэтому firefox завершится ошибкой и сообщит что-то вроде

(firefox:22376): Gtk-WARNING **: Locale not supported by C library.
    Using the fallback 'C' locale.
Error: GDK_BACKEND does not match available displays

И прекратить. Как увидеть эту ошибку? Обычно демон cron попытается отправить вам письмо, см. /var/spool/mail.


О двух формах:

{ crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -

должно быть записано как

{ crontab -l; echo "1 * * * * /usr/bin/firefox"; } | crontab -

(обратите внимание на лишнюю точку с запятой)

Разница между ()и {}заключается в том, что первый создает оболочку подчиненного -, тогда как последний выполняет команды в том же контексте оболочки. Таким образом, присвоение переменных сохраняется в одной форме, но не в другой.

2
27.01.2020, 23:33

Я получал ту же ошибку при попытке запустить firefox-esrиз задания cron.

Установка DISPLAYпрямо в файле cron помогла:

* * * * * pi export DISPLAY=:0 && /usr/bin/firefox-esr &

(Обязательно узнайте свой настоящий DISPLAYномер, выполнивecho $DISPLAY)

0
27.01.2020, 23:33

Теги

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