我只想根据文件是否存在重新启动named。我整天都被困在这一天。
创建bash文件的命令:
$this->execute('echo -e "#!/bin/bash\nsudo /sbin/service named reload" >> /var/reload_named.sh');
这是我的cronjob:
*/1 * * * * cronjob: sudo sh /var/reload_named.sh; rm -f /var/reload_named.sh;
以下是cronjob运行时发生的情况(/var/log/cron
):
Jul 30 18:34:01 digitalocean CROND[24864]: (root) CMD (cronjob: sudo sh /var/reload_named.sh; rm -f /var/reload_named.sh )
Jul 30 18:34:01 digitalocean CROND[24862]: (root) UNSAFE (”example@digitalocean.com”)
出于某种原因,它说它是UNSAFE
。我尝试过使用sudo和不使用sudo。
它设法删除文件但不重命名。我已经尝试过这么多其他方法来实现这一点。
我已经尝试过(通过大量谷歌搜索):
service named restart
crontab -e
任何有用的帮助
(我在Centos 6.7上)
答案 0 :(得分:0)
我终于想出办法来做到这一点。这是一个以root身份SSH自身并运行服务命令的方法:
$this->root_execute('service named reload');
public function root_execute($command = '')
{
set_include_path('/path/to/dir/ssh/');
require_once('Net/SSH2.php');
$ssh = new Net_SSH2(SSH_HOST);
if (!$ssh->login(SSH_USER, SSH_PASS)) {
exit('failed');
}
$res = $ssh->exec($command);
$ssh = null;
restore_include_path();
return $res;
}
(如果从http .php运行,很遗憾不适用于HTTPD)