首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过cron作业调用的脚本停止服务?

如何通过cron作业调用的脚本停止服务?
EN

Stack Overflow用户
提问于 2020-12-10 13:08:39
回答 1查看 44关注 0票数 0

我有一个cron作业,它每X分钟运行一次,并且应该重新启动amazon-ssm-agent服务。然而,我注意到我的ruby脚本实际上从来没有做到这一点。

下面是我的crontab的样子:

代码语言:javascript
复制
* * * * * /root/./my_script.rb

下面是ruby脚本中非常简单的内容:

代码语言:javascript
复制
#!/usr/bin/env ruby
#

command = "service amazon-ssm-agent stop"
system(command)

如果我在监控/var/log/amazon/ssm/amazon-ssm-agent.log,它永远不会停止。如果我用service amazon-ssm-agent status查看该服务,它仍然显示为在线。

从Cron作业调用的ruby脚本中停止或重新启动服务的最佳方式是什么?我今天面临着一个相当大的问题,我想这就是原因。

我尝试捕获结果并将其写到一个文件中,但是当cron作业运行时,文件被创建,但它是空的。下面是ruby脚本现在的样子:

代码语言:javascript
复制
#!/usr/bin/env ruby

command = "service amazon-ssm-agent stop"
result = system(command)
File.open("/root/result.txt", "w") {|f| f.write(result)}

我还尝试将脚本修改为:

代码语言:javascript
复制
#!/usr/bin/env ruby

command = "service amazon-ssm-agent stop"

但还是不走运。我甚至修改了我的cron作业本身来启动服务,而不是调用启动服务的ruby脚本,但没有运气:

代码语言:javascript
复制
* * * * * service amazon-ssm-agent start

服务永远不会启动。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-11 00:29:03

弄清楚了问题,这是愚蠢的。我意识到service命令并不驻留在cron作业所具有的环境路径中,所以这就是它从不工作的原因。ifconfig也不是,这也是我想要测试的。

因此,我不得不将Ruby脚本中的service命令替换为/usr/sbin/service,之后它就可以完美地工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65228804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档