Как отключить сообщение "нет crontab для пользователя" в оболочке
Я делаю это в моем коде
ssh -q username@ip 'crontab -l' > $PWD/crontab.txt
Если сервер имеет crontab
Нет проблем, это работает. Но если на этом сервере нет crontab, я получаю сообщение no crontab for username
,
Есть ли способ отключить это сообщение? Когда нет crontab, я не хочу, чтобы он что-либо выводил.
заранее спасибо
1 ответ
Я знаю, что это старый пост, но я тоже боролся с этим и до сих пор не смог найти удовлетворительного ответа. Причина, по которой я хочу подавить это сообщение, заключается в том, что я пишу скрипт, который также добавляет строку в crontab, используя следующие строки, и имеет свой собственный вывод для пользователя:
CRON_LINE='0 0 1 * * /path/to/my_script.sh'
(crontab -u antiftw -l; echo "$CRON_LINE" ) | crontab -u antiftw -
Я попытался добавить обычные перенаправления (как упоминалось в комментариях) в конце второй строки, но они оба не подавляли сообщение:
2> /dev/null
>> /dev/null 2>&1
Итак, после некоторого осмотра и тестирования я обнаружил, что причина, по которой отображается это сообщение, заключается в том, что в месте, где хранится crontab, нет файла. В Ubuntu 20.04 это:
/var/spool/cron/crontabs/
Этот файл имеет имя пользователя, для которого мы создаем crontab:
/var/spool/cron/crontabs/root для пользователя root
или
/var/spool/cron/crontabs/antiftw для пользователя 'antiftw'
Итак, в случае, если мы хотим создать crontab для пользователя «antiftw», мы создаем пустой файл в этом месте, используя:
touch /var/spool/cron/crontabs/antiftw
После этого важно дать этому файлу правильного владельца/группу и права доступа к файлу, иначе мы получим следующую ошибку при попытке изменить crontab с помощью команды crontab:
crontab: crontabs/antiftw: переименовать: операция не разрешена
Итак, мы выполняем следующие команды:
chmod 600 /var/spool/cron/crontabs/antiftw
chown antiftw:crontab /var/spool/cron/crontabs/antiftw
Примечание. Если мы хотим сделать это для пользователя root, это изменится на:
chmod 600 /var/spool/cron/crontabs/root
chown root:crontab /var/spool/cron/crontabs/root
В результате следующие разрешения:
-rw------- 1 антифтв кронтаб
И теперь, когда мы подготовили файл, мы можем просто добавить наши cron-строки, не получая сообщения. Чтобы проверить, правильно ли добавлены строки, мы можем использовать:
crontab -l
Это создаст недавно добавленный cronline.