存储到变量sudo结果


0

我有这个简单的脚本

#!/bin/sh
ISUP=`sudo /etc/init.d/jboss7 status | grep running`
echo "ISUP: " $ISUP

如果我手动运行它可以正常工作

[jboss@suc072-ipos ~]$ sh a.sh
ISUP:  JBoss AS 7.1.1 is running (pid 29125)

但如果我用crontab运行它,变量是空的:O :(

* * * * * /home/jboss/a.sh > /home/jboss/a.log
[jboss@suc072-ipos ~]$ cat a.log
ISUP:

任何想法如何解决这个问题?

linux centos

[jboss@suc072-ipos ~]$ cat /etc/redhat-release
CentOS release 6.7 (Final)

Answers:


0

除非您已为该帐户配置了sudo,否则此cron作业正在运行,不需要密码,并且您还修改/etc/sudoers了注释掉该行Defaults requiretty并且(可能)添加/ etc/init.d/到安全路径时,这将始终失败,因为它在非交互式运行时会像在一个cronjob。

相反,最受欢迎的方法是将cron作业设置为以root身份运行并从脚本中删除sudo。要添加将以root身份运行的cronjob,请使用以下命令:

sudo crontab -e

以与之前相同的方式添加cronjob。

然后从脚本中删除sudo,这里还有一些其他的小清理/建议的更改:

#!/bin/bash
ISUP="$(/etc/init.d/jboss7 status | grep running)"
echo "ISUP:  $ISUP"

谢谢你的信息,我想这就是为什么也失败了这个错误sudo:对不起,你必须有一个tty运行sudo
Vivy Rojas Valverde 2016年

1
如何sudo删除?ISUP="$(sudo /etc/init.d/jboss7 status | grep running)"
杰克古尔德2016年

哎呀。那是一个错字; 固定它。
Argonauts 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.