правильный формат команды даты в crontab

Я пытаюсь вывести текущую дату в этом формате в файл с помощью / etc / crontab. Но crontab не любит такое форматирование. Замена sh на bash не помогает.

my crontab:

* * * * * root echo "$(date +%F) - $(date +%T) - no sleep!" >> /home/thomas/1-18-WD/ami

ожидаемый результат в файл: 2021-05 -18 - 03:57:09 - без сна!

это сработает, только если я просто введу echo "$ (date) - no sleep!" Я думаю, что "+" вызывает проблему.

1
задан 18 May 2021 в 06:27

2 ответа

Проблема не в символах +, а в символах %, как объяснено здесь:

Однако вы можете упростить команду и избежать двух вызовов date и echo, переместив ваш текст в строку формата date напрямую, т.е.. например, date "+%F - %T - no sleep!"

В кронтабе это должно быть записано так:

* * * * * root date "+\%F - \%T - no sleep!" >> /home/thomas/1-18-WD/ami
0
ответ дан 28 July 2021 в 11:39

Задания выполняются через cron, или at, или batch, не выполняются в той же среде выполнения, что и на рабочем столе. Ни одно из изменений PATH или других переменных среды автоматически не распространяется на задание cron. Например, нет $DISPLAY, поэтому программы графического интерфейса пользователя нуждаются в особом подходе (прочитайте man xhost).

Переменные среды можно задать для всех заданий cron в файле crontab Прочитайте man 5 crontab.

Посмотрите на результаты echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias в каждой из ваших сред.

Поскольку часть command строки crontab по умолчанию интерпретируется /bin/sh, который имеет более простой синтаксис, чем /bin/bash, я рекомендую, чтобы command был вызовом сценария bash (исполняемого, смонтированного, начинающегося с7 #!/bin/bash), который настраивает среду, а затем вызывает нужную программу.

0
ответ дан 28 July 2021 в 11:39

Другие вопросы по тегам:

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