У меня есть несколько скриптов php, которые мне нужно запланировать на каждый час.
(а) Как мне запланировать их из командной строки / оболочки?
(б) Какие разрешения / права собственности я должен установить для них?
Изменить 1:
Привет, ребята - сайтом управляет пользователь apache. От имени какого пользователя запускается cron-скрипт? рут или апач или еще что?
crontab -e
откроет редактор crontab для вашего личного crontab, если администратор разрешит их. Здесь вы бы поставили строку вроде
0 * * * * /usr/bin/php /home/matt_tm/php/runme.php
один раз для каждого сценария, с /usr/bin/php
- полный путь к вашему двоичному файлу php командной строки и полный путь к файлу php, который вы хотите запустить.
Это запустит скрипт 0-ю минуту (: 00) каждого часа, каждый день месяца, каждый месяц и каждый день недели (вы можете захотеть распределить их так, чтобы один скрипт начинался с 0, а другой - с 5-я минута и так далее). Команды в вашем личном crontab запускаются от имени вашей учетной записи, поэтому все, что нужно вашему скрипту в этом случае, - это чтобы ваша учетная запись могла читать скрипт, выполнять двоичный файл php и иметь доступ ко всем файлам, которые необходимы скрипту.
В качестве альтернативы ответу DerfK вы также можете начинать каждый PHP со строки.
#!/path/to/php
и chmod файл, который должен быть исполняемым.
Ваша строка crontab теперь будет выглядеть так:
0 * * * * /path/to/php/script.php
(а) вы можете использовать php-cli или wget / curl (другие утилиты) (б) разрешение на выполнение. если скрипту php необходимо создать файл, убедитесь, что разрешение такое же, как у запущенного пользователя.
чтобы запланировать их, отредактируйте файл cron для пользователя, от имени которого они должны работать. "man crontab" должен рассказать вам, как это сделать.
Что касается владельца, все зависит от того, что скрипты должны делать. если они изменяют какой-либо ресурс, то сценарий должен иметь разрешение пользователя или группы для изменения ресурса (при условии, что этот ресурс является локальным файлом). Часто наиболее разумный способ сделать это в unix-подобной системе - использовать разрешения группы.