Я создал ожидаемый скрипт, который не будет запускаться при вызове cron. Я включил полный путь в cron при его вызове следующим образом.
* * * * * /usr/local/sbin/checkForRemoteTasks >/tmp/checkForRemoteTasks.output
Это вызывает скрипт checkForRemoteTasks и экспортирует результаты в /tmp/checkForRemoteTasks.output. Содержимое скрипта выглядит следующим образом:
#!/usr/bin/expect -f
set timeout -1
set env(TERM) vt100
if [file exists "/usr/local/sbin/remoteTasks/restartMySQL"] {
## STOP APACHE FIRST
spawn apache2ctl stop
expect "#"
spawn service mysql restart
expect "#"
spawn rm /usr/local/sbin/remoteTasks/restartMySQL
expect "#"
spawn apache2ctl start
expect "#"
}
if [file exists "/usr/local/sbin/remoteTasks/restartApache"] {
spawn apache2ctl graceful
expect "#"
spawn rm /usr/local/sbin/remoteTasks/restartApache
expect "#"
}
У меня есть скрипт на моем тестовом сервере, который загружает файл в файл / usr / local / sbin / remoteTasks / restartMySQL. Файл содержит один символ. Сценарий ожидаемого запуска cron (на моем рабочем сервере) должен проверить файл restartMySQL, и если он найдет файл, он должен запустить соответствующие команды для остановки apache, перезапустить MySQL, а затем перезапустить apache. Он работает, когда я запускаю его вручную, а не когда запускаю через cron. Любая помощь будет оценена.
Вот вывод /tmp/checkForRemoteTasks.output:
spawn apache2ctl stop
Действительно ли какая-либо из тех команд является на самом деле интерактивной? Если не, просто используйте exec
if {[file exists "/usr/local/sbin/remoteTasks/restartMySQL"]} {
## STOP APACHE FIRST
exec apache2ctl stop
exec service mysql restart
file delete /usr/local/sbin/remoteTasks/restartMySQL
exec apache2ctl start
}
if {[file exists "/usr/local/sbin/remoteTasks/restartApache"]} {
exec apache2ctl graceful
file delete /usr/local/sbin/remoteTasks/restartApache
}
, Но если Вы делаете это, Вы, сила была хорошо палкой с оболочкой:
#!/bin/sh
if [[ -f /usr/local/sbin/remoteTasks/restartMySQL ]]; then
## STOP APACHE FIRST
apache2ctl stop
service mysql restart
rm /usr/local/sbin/remoteTasks/restartMySQL
apache2ctl start
fi
if [[ -f /usr/local/sbin/remoteTasks/restartApache ]]; then
apache2ctl graceful
rm /usr/local/sbin/remoteTasks/restartApache
fi
.app-view-control:last-child:rtl
наborder-radius: 18px 18px 18px 18px
, но это didn' t работа. можно ли указать, на который должно быть изменено значение? – user2438113 28 December 2015 в 18:46