Мой коллега сбежал grep | crontab
. После этого все рабочие места исчезли. Похоже, он пытался бежать crontab -l
.
Так что же произошло после запуска команды grep | crontab
? Кто-нибудь может объяснить?
Мой коллега сбежал grep | crontab
. После этого все рабочие места исчезли. Похоже, он пытался бежать crontab -l
.
Так что же произошло после запуска команды grep | crontab
? Кто-нибудь может объяснить?
Ответы:
crontab
может установить новое crontab
для вызывающего пользователя (или упомянутого пользователя как root
) чтение из STDIN. Это то, что произошло в вашем случае.
grep
без какой-либо опции генерирует сообщение об ошибке на STDERR как обычно, и вы отправляете STDOUT из grep
на STDIN, из crontab
которого пусто, следовательно, ваш crontab
пропадет.
Как он прекратил работу? Он набрал Cc или Cd? Если он набрал Cd, то это эквивалентноcrontab < /dev/null
и вы заменили файл crontab пользователя на пустой. С другой стороны, если вы убьете crontab
с помощью Cc, то crontab мог бы быть сохранен, но вы можете легко это проверить, запустив crontab -l
.
Все, что делает эта программа, это редактирует файлы crontab /var/spool/cron/
, поэтому, если у вас есть резервная копия файловой системы, вы можете просто восстановить файл crontab пользователя оттуда.
Я не видел, чтобы у grep не было аргументов, поэтому grep выдаст ошибку и файл crontab будет удален всегда.
crontab
требуют использования в-
качестве имени файла для чтения из стандартного ввода. Я предполагаю, что это потому, что слишком много людей сдували свои кронтабы с такими ошибками.