我制作了以下cronjob sh文件:
Vi RestartServices.sh
/etc/init.d/b1s stop
sleep 10
/etc/init.d/sapb1servertools stop
sleep 10
sudo -u ndbadm /usr/sap/NDB/HDB00/HDB stop
sleep 20
sudo -u ndbadm /usr/sap/NDB/HDB00/HDB start
sleep 10
/etc/init.d/sapb1servertools start
sleep 10
/etc/init.d/b1s start
手动运行此文件时,作业将正确运行。
# srvmagtCron: restarts daemons that died
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/sh -c "[ -x /etc/srvmagt/srvmagtCron ] && /etc/srvmagt/srvmagtCron"
0 2 * * * /hanamnt/shared/NDB/HDB00/backup/scripts/VGRbackup.sh
#RESTARTS SERVICE LAYER , SAPB1ServerTools service , HDB
0 3 * * * /hanamnt/shared/NDB/HDB00/backup/scripts/RestartServices.sh
您有一个非标准的$path
,crond(8)正在运行带有较短$path
的crontab(5)条目。另请参阅environ(7)、credentials(7)和execvp(3)以及execve(2)
我的建议是编写一个完整的shell脚本,并仅将其放入crontab中。因此,不要在crontab条目中使用sh-c
,并显式设置path
(最好是在shell脚本中启动crontab
条目,或者在crontab
文件中)。
例如,您可以
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /hanamnt/shared/srvmagt.sh
在crontab中,并有一个可执行的/hanamnt/shared/srvmagt.sh
文件以
#!/bin/bash
export PATH=/opt/sap/sapjvm_6//bin:/opt/fujitsu/bwai/bin:/sbin:\
/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:\
/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:\
/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
# log a starting message
logger start of $0
注意logger(1)的使用--您应该更明智地使用它来在/var/log
下获取适当的日志消息
顺便说一句,您的path
太长了。这样长的路径
很混乱(可能会减慢shells的速度),并且可能存在安全风险;我建议使用一个更短的代码(可能像$home/bin:/usr/local/bin:/bin:/usr/bin
)并使用显式程序路径在$home/bin/
或/usr/local/bin/
中添加适当的符号链接或脚本。
请注意,sudo
可以在crontab作业中使用(但这通常是不明智的),然后可能应该在/etc/sudoers
中配置;也许您应该更喜欢/bin/su
(参见su(1)...)在一些shell脚本中。
另请阅读有关setuid的更多信息。有时,用C编写一个包装器setuid-program(使用setreuid(2))是更明智的做法,但要小心(您可能会错误地打开巨大的安全漏洞)。
阅读Advanced Linux Programming(可免费下载,有点旧),然后阅读syscalls(2),以更好地理解Linux内部如何工作。你需要对你的系统有一个更好、更清晰的图像在你的头脑中。
除了没有之外,我似乎可以运行每个docker命令。我注意到这一点是因为在最近的部署过程中,启动服务的脚本突然失败了。该脚本包括以下命令 很长一段时间以来,它一直保持不变,工作没有问题,但显然系统中的某些东西已经改变了。我已经尝试按照Stack Overflow和其他站点上的许多类似问题中概述的步骤,建议的解决方案是将用户添加到docker组并重新启动服务。例如,从Docker自己的论坛。但问题还是
我想自动化一个构建-目前,在我的开发过程中,所以不涉及安全的东西。 从构建器(Qt Creator)运行脚本时,不会提示我输入sudo密码,但会出现错误 我已经找到了一些解决办法,但就是不起作用...我错过了什么? 确切代码: 我按照上面回答的建议做了:编辑了visudo并添加了脚本...甚至还添加了Qmake... 同样的错误 编辑:在问完这个问题后,我发现了一个类似的建议问题:https://
嘿,我在POM中做了这个配置。xml文件并行运行测试。但当我使用cmd进行“mvn验证”时,只有一个浏览器正在运行一个功能,而在完成一个功能文件的执行后,另一个功能正在运行。这是我的代码和pom。xml请建议我怎么做? 我正在使用cucumber 这是我的pom.xml代码: 提前感谢。
问题内容: 我想用不带sudo密码的用户sa1运行ansible: 第一次可以: 第二次失败: 请帮忙! 问题答案: 这不是您的服务器的配置。确保允许sudo的用户使用并且无需密码即可使用。 要登录到服务器 使用以下命令打开sudoers文件 确保您有这样的一行: 用您的用户替换 保存文件 您可以通过运行以下命令从服务器本身进行尝试: 如果这可行,那么它也应该可以正常运行。
问题内容: 我想像运行shell命令: 不用任何插件就能做到吗?由于Jenkins不是,而是服务帐户,我该如何添加? 问题答案: 首先执行 然后执行 然后注销 对于注销很重要,因为您需要重新评估组成员身份 登录并重试 有用!
我试图设置Docker,以便在使用它之前不必键入。 我所采取的步骤: 我开始创建一个docker组与; 我用; 我重启docker与; 我关闭并打开终端开始新的会话。 运行后,我收到以下输出: FATA[0000]Post超文本传输协议:///var/run/docker.sock/v1.17/containers/create:拨号unix /var/run/docker.sock:权限被拒绝。