在linux里用cron定时任务运行ruby脚本

用cron定时任务执行ruby脚本的时候,总会遇到各种权限问题,这里总结了一下

Posted by Start Bootstrap on November 14, 2017

要想用cron定时执行shell脚本,要注意shell脚本中是否有涉及ruby命令执行的程序。

目前的情况是用cron定时执行shell脚本,shell脚本检查系统进程中是否有某个ruby程序正在运行。若是没有这个ruby程序,则运行此ruby程序。

手动执行ruby程序没有任何问题,但是如果用cron任务定时执行shell脚本,然后shell脚本来执行ruby程序的话,会缺少很多环境。直接用ruby命令来执行ruby程序的话,需要rvm 环境,现在把rvm环境加入到cron定时任务里有简单的方法,直接执行rvm cron sertup就可以将rvm的环境导入到cron定时任务里。

另外ruby程序中如果涉及:

  1. 写入文件
  2. sudo命令执行命令
  3. 调用其他应用程序等等

应该用如下方法依次解决:

  1. 修改文件的读写权限
  2. 编辑/etc/sudoers,指定可以不需要密码执行命令的用户
  3. 在要运行ruby程序的shell脚本中加入要调用的程序的环境变量