使用 crontab 重启 Shiny Server
Restarting Shiny Server with crontab
我在让 shiny-server
通过 crontab
重新启动时遇到了一些麻烦。到目前为止,我已经尝试了两种方法:
1) 创建了 bash 脚本,最后一行 restart shiny-server
,并添加到 crontab
。此外,此脚本中还有 SQL 预处理数据的代码。
0 15 * * * bash /home/local/ANT/raybao/load.sh
2) 在 crontab -e
中为 root
用户添加了一行,如下所示:
0 15 * * * restart shiny-sever
我添加到 root crontab
而不是我自己的用户的只是因为您需要 sudo restart shiny-server
否则。
奇怪的是,上面 #1 中的所有 SQL 代码都成功运行并被记录,但是 shiny-server
进程没有重新启动。如果我简单地做:sudo -i
然后 restart shiny-server
,它起作用了,所以我很困惑。
关于如何解决这个问题有什么想法吗?
对于 Linux 及其附带的所有内容,我仍然是初学者,但这对我有用。
如果您喜欢我并从 Ubuntu 14.04 切换到 15.04 Ubuntu 更改为默认使用 systemd。此转换也可以在 1.4 停止和启动 下看到 here。
我的问题是我有一个旧版本的 shiny-server
使用 upstart
来启动和停止 shiny-server 所以为了解决这个问题我重新安装了 shiny-server 并将其粘贴到我的 crontab ( root) 测试重启是否有效:
* */1 * * * systemctl restart shiny-server
听起来您的问题有所不同,但这也许能有所帮助?
所以,我最终在 Ask Ubuntu 上发布了同样的问题:https://askubuntu.com/questions/687423/use-crontab-to-restart-an-upstart-service-on-schedule
总而言之,在 Ubuntu 12.04(使用 Upstart)中安排 shiny-server
重启的正确方法是将以下条目添加到您的 root
用户的 crontab
:
0 6 * * * /usr/sbin/restart shiny-server
感谢@earthmeLon 帮助我解决了这个问题。希望这对以后的人有所帮助!
服务器文档中描述了另一种解决方案:http://docs.rstudio.com/shiny-server/#schedulers-application-restarts
An application can be restarted by altering the "modified time" on a file named restart.txt in the application's directory. This can most easily be done using the touch utility, as in touch restart.txt, which will update the modified timestamp on this file to the current time. Upon the next new connection to the application, Shiny Server will spawn a new R process to run the "new" (restarted) Shiny Application for this and future users. When this occurs, the old processes will remain unaltered, and open connections will remain active and valid until the last connection closes itself.
因此,您可以使用此行重新启动:
1) 在app目录下创建文件restart.txt
:
nano restart.txt
2) 对该文件调用触摸:
* */1 * * * touch restart.txt
`
我在让 shiny-server
通过 crontab
重新启动时遇到了一些麻烦。到目前为止,我已经尝试了两种方法:
1) 创建了 bash 脚本,最后一行 restart shiny-server
,并添加到 crontab
。此外,此脚本中还有 SQL 预处理数据的代码。
0 15 * * * bash /home/local/ANT/raybao/load.sh
2) 在 crontab -e
中为 root
用户添加了一行,如下所示:
0 15 * * * restart shiny-sever
我添加到 root crontab
而不是我自己的用户的只是因为您需要 sudo restart shiny-server
否则。
奇怪的是,上面 #1 中的所有 SQL 代码都成功运行并被记录,但是 shiny-server
进程没有重新启动。如果我简单地做:sudo -i
然后 restart shiny-server
,它起作用了,所以我很困惑。
关于如何解决这个问题有什么想法吗?
对于 Linux 及其附带的所有内容,我仍然是初学者,但这对我有用。
如果您喜欢我并从 Ubuntu 14.04 切换到 15.04 Ubuntu 更改为默认使用 systemd。此转换也可以在 1.4 停止和启动 下看到 here。
我的问题是我有一个旧版本的 shiny-server
使用 upstart
来启动和停止 shiny-server 所以为了解决这个问题我重新安装了 shiny-server 并将其粘贴到我的 crontab ( root) 测试重启是否有效:
* */1 * * * systemctl restart shiny-server
听起来您的问题有所不同,但这也许能有所帮助?
所以,我最终在 Ask Ubuntu 上发布了同样的问题:https://askubuntu.com/questions/687423/use-crontab-to-restart-an-upstart-service-on-schedule
总而言之,在 Ubuntu 12.04(使用 Upstart)中安排 shiny-server
重启的正确方法是将以下条目添加到您的 root
用户的 crontab
:
0 6 * * * /usr/sbin/restart shiny-server
感谢@earthmeLon 帮助我解决了这个问题。希望这对以后的人有所帮助!
服务器文档中描述了另一种解决方案:http://docs.rstudio.com/shiny-server/#schedulers-application-restarts
An application can be restarted by altering the "modified time" on a file named restart.txt in the application's directory. This can most easily be done using the touch utility, as in touch restart.txt, which will update the modified timestamp on this file to the current time. Upon the next new connection to the application, Shiny Server will spawn a new R process to run the "new" (restarted) Shiny Application for this and future users. When this occurs, the old processes will remain unaltered, and open connections will remain active and valid until the last connection closes itself.
因此,您可以使用此行重新启动:
1) 在app目录下创建文件restart.txt
:
nano restart.txt
2) 对该文件调用触摸:
* */1 * * * touch restart.txt
`