Мой коллега сбежал 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требуют использования в-качестве имени файла для чтения из стандартного ввода. Я предполагаю, что это потому, что слишком много людей сдували свои кронтабы с такими ошибками.