Может grep | crontab уничтожить все рабочие места?

21

Мой коллега сбежал grep | crontab. После этого все рабочие места исчезли. Похоже, он пытался бежать crontab -l.

Так что же произошло после запуска команды grep | crontab? Кто-нибудь может объяснить?

user129224
источник

Ответы:

33

crontabможет установить новое crontabдля вызывающего пользователя (или упомянутого пользователя как root) чтение из STDIN. Это то, что произошло в вашем случае.

grep без какой-либо опции генерирует сообщение об ошибке на STDERR как обычно, и вы отправляете STDOUT из grep на STDIN, из crontabкоторого пусто, следовательно, ваш crontabпропадет.

heemayl
источник
4
Некоторые версии crontabтребуют использования в -качестве имени файла для чтения из стандартного ввода. Я предполагаю, что это потому, что слишком много людей сдували свои кронтабы с такими ошибками.
Бармар
4

Как он прекратил работу? Он набрал Cc или Cd? Если он набрал Cd, то это эквивалентноcrontab < /dev/null и вы заменили файл crontab пользователя на пустой. С другой стороны, если вы убьете crontabс помощью Cc, то crontab мог бы быть сохранен, но вы можете легко это проверить, запустив crontab -l.

Все, что делает эта программа, это редактирует файлы crontab /var/spool/cron/, поэтому, если у вас есть резервная копия файловой системы, вы можете просто восстановить файл crontab пользователя оттуда.

Обновить

Я не видел, чтобы у grep не было аргументов, поэтому grep выдаст ошибку и файл crontab будет удален всегда.

user3188445
источник
1
Вам не нужно Cc или Cd, crontab уже исчезнет
DarkHeart