Basi c Задание Cron для запуска сценария оболочки для добавления даты в журнал, не работает - PullRequest
2 голосов
/ 11 апреля 2020

У меня есть addlog.sh файл со следующим содержимым:

echo "time right now:" `date` >> ~/Desktop/date.log

Вот так выглядит мой crontab -l:

* * * * * /bin/sh /Users/naman/Desktop/addlog.sh

Я добавил правильные права доступа к файлу addlog.sh, и моя оболочка находится на /bin/sh. Я убедился, что ручной запуск addlog.sh добавляет время к файлу date.log.

Я запускаю это в моей локальной Ma c. Но это не работает, и я не уверен, чего мне здесь не хватает.

1 Ответ

1 голос
/ 11 апреля 2020

Я подозреваю, что вы используете Catalina (10.15) с ограничительной защитой целостности системы. Есть два возможных решения.

Решение 1

Переместите ваш скрипт и файл журнала из ~/Desktop в ~/. В отличие от ~/Desktop, ~/Documents и, возможно, других папок, домашний каталог не подлежит защите целостности системы.

Решение 2

Если вам нужно сохранить свой сценарий и файл журнала в ~/Desktop:

  1. Добавьте #!/bin/sh шебанг (первая строка) к вашему addlog.sh сценарию
  2. Создайте тривиальный addlog.app из вашего addlog.sh сценария следующим образом:
mkdir -p ~/Desktop/addlog.app/Resources/MacOS/
cp ~/Desktop/addlog.sh ~/Desktop/addlog.app/Resources/MacOS/addlog
chmod +x ~/Desktop/addlog.app/Resources/MacOS/addlog
Измените crontab на следующее:
* * * * * /Users/naman/Desktop/addlog.app/Resources/MacOS/addlog

Вы также должны разрешить вновь созданному приложению доступ к файлам в областях, защищенных SIP, следующим образом:

  1. Откройте «Системные настройки», «Безопасность и конфиденциальность»
  2. Нажмите на замок и выполните аутентификацию для внесения изменений.
  3. Выберите «Полный доступ к диску» на левой панели.
  4. В правой части нажмите +.
  5. Перейдите на рабочий стол и выберите новое приложение addlog. Он будет добавлен в список приложений. Убедитесь, что флажок установлен.
  6. Закрыть «Системные настройки»
...