【发布时间】:2014-06-18 06:50:42
【问题描述】:
我需要执行一个运行多个管理系统命令的进程。我想在运行时保持 sudo 时间戳最新,以防进程运行时间过长。
我有以下代码,但它似乎不起作用。
sudo_keep_alive = Thread.start do
def sudo
sleep 5.minutes
`sudo -v`
sudo
end
sudo
end
at_exit do
sudo_keep_alive.kill
end
这有约定吗?
更新
我无法运行脚本的原因是root,脚本运行的其他系统命令无法以root身份运行。每个命令都需要负责运行它自己的管理命令。该脚本可能需要相当长的时间才能运行,所以我只是想在命令需要时保持 sudo 时间戳的最新状态。
【问题讨论】:
-
为什么不用
sudo运行你的ruby 脚本? -
没有多大意义。首先,您需要以更系统的方式保持 sudo 凭据,而不是使用这种黑客攻击。其次,您的线程将与主进程同时死亡,因此向 Kernel.at_exit 注册是没有意义的。
标签: ruby asynchronous