![Crontab запускает скрипт каждую минуту](https://rvso.com/image/1597818/Crontab%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%20%D0%BA%D0%B0%D0%B6%D0%B4%D1%83%D1%8E%20%D0%BC%D0%B8%D0%BD%D1%83%D1%82%D1%83.png)
В настоящее время я пытаюсь запланировать cronjob для запуска файла скрипта .sh каждую минуту.
Вот мой простой сценарий:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
Я сохранил это на своем рабочем столе и назвал его notify.sh. Затем я открыл новое окно терминала и ввел crontab-e
. Это открыло новый файл nano, в котором я набрал:
* * * * * /Users/navania/Desktop/notify.sh
Я сохранил и создал этот nano-файл. Что мне делать дальше, чтобы cronjob успешно запустился?
Предпринятые шаги:
- Откройте приложение терминала и введите
crontab-e
. - Это открывает новый nano-файл, в котором я ввожу команду:
* * * * * /Users/navania/Desktop/notify.sh
- Затем я нажимаю Ctrl+O, чтобы сохранить его, а затем Ctrl+X, чтобы сохранить его под именем CrontabTest.
- При выходе появляется сообщение, что изменения в crontab не внесены, что не имеет смысла.
- Затем я открыл файл журнала и посмотрел, печатает ли он Hello World каждую минуту, но этого не происходит.
Любая помощь будет оценена по достоинству. Спасибо!
решение1
Скорее всего, ваш скрипт пытается запускаться каждую минуту.
Следуйте инструкциям Камиля по изменению строки crontab для включения /bin/sh
Немного измените свой скрипт, чтобы он выводился в файл, а не пытался писать на экран, так как команда не будет работать в вашем терминале. Вместо этого она работает в своем собственном процессе, поэтому вы не увидите никакого вывода.
Например, измените свой скрипт следующим образом:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
и проверьте ваш файл .log, чтобы увидеть, записываются ли в него новые строки.
решение2
Вам следует сделать скрипт исполняемым:
chmod +x /Users/navania/Desktop/notify.sh
И убедитесь, что файловая система, в которой находится скрипт, не смонтирована с помощью noexec
. Затем команда
/Users/navania/Desktop/notify.sh
должно работать, также как и cronjob.
В качестве альтернативы команда в crontab должна быть такой:
/bin/sh /Users/navania/Desktop/notify.sh
В этом случае разрешение на исполнение не имеет значения (как и сам скрипт).
Пожалуйста, обрати вниманиене следует ожидать, что текстовый вывод cronjob появится в каком-либо терминале.
И вот такая проблема:
- Затем я нажимаю Ctrl+O, чтобы сохранить его, а затем Ctrl+X, чтобы сохранить его под именем
CrontabTest
.- При выходе появляется сообщение, что изменения в crontab не внесены, что не имеет смысла.
Я считаю, что вам нужно сохранить любой временный файл, который открывается, а не новый файл. Не меняйте имя при сохранении.