Cron

以 apache 使用者身份創建 cron 並以 root 使用者身份執行

  • August 17, 2016

我正在以 apache 使用者身份創建這個 cron 並希望以 root 身份執行這個 cron,下面是我的程式碼片段:

# Create a cron job to restart apache
cron_file="/etc/cron.d/restart_apache_crontab"
cron_job="*/1 * * * * root condrestart-apache.sh"
echo "$cron_job" > $cron_file
chmod 777 $cron_file
exit 0

為 cron.d 目錄提供了足夠的權限(將目錄組更改為 apache 使用者),腳本使用上述腳本在 /etc/cron.d/ 處生成了一個 cron 文件 restart_apache_crontab

condrestart-apache.sh 包含以下程式碼,並具有足夠的 apache 使用者訪問權限:

rm -f /etc/cron.d/restart_apache_crontab
/sbin/service httpd restart > restart-apache.log

這將首先刪除 cron 然後重新啟動 apache(意味著 cron 將只執行 1 次)

我能夠以 apache 使用者身份創建 cron,但無法以 root 使用者身份執行它。

請幫我解決這個問題.. 程式碼片段將非常有幫助..

在 cronjob 中"*/1 * * * * root condrestart-apache.sh",我希望您的重啟腳本有一個絕對路徑,例如/usr/local/sbin/condrestart-apache.sh.

並且 condrestart-apache.sh 必須是可執行的(例如chmod 755)shell 腳本,當然還包括#!/bin/sh 您的程式碼片段中缺少的內容。

重新啟動 Apache 的主要原因是影響配置更改,因此在嘗試重新啟動 Web 伺服器並終止它之前檢查語法是否正確可能也是一個好主意……

#!/bin/sh
# /usr/local/sbin/condrestart-apache.sh
rm -f /etc/cron.d/restart_apache_crontab
RETVAL=0
/usr/sbin/apachectl configtest
RETVAL=$?
if [ $RETVAL -ne  0 ]; then
  echo "Configuration file invalid"
  exit 1
fi
/sbin/service httpd restart 
RETVAL=$?
if [ $RETVAL -ne  0 ]; then
  echo "Restart Failed"
  exit 1
fi

引用自:https://unix.stackexchange.com/questions/103342