Ril*_*nch 6 startup gnu-screen upstart
我正在尝试创建一个screen
在启动时启动新会话的 Upstart 作业,我想在其中自动启动一个java
可执行文件。这是我目前正在尝试使用的 .conf 文件,尽管我已经尝试了其他几个文件:
description "Run the bungeecord jar"
start on (local-filesystems and net-device-up IFACE=eth0 and runlevel [2345])
stop on runlevel [016]
exec start-stop-daemon --start -c ridog --exec /usr/bin/screen -- -dmUS BungeeCord java -server -XX:UseSSE=4 -XX:+UseCMSCompactAtFullCollection -XX:MaxPermSize=356m -XX:ParallelGCThreads=6 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+UseCompressedOops -XX:+AggressiveOpts -Xmx256M -jar BungeeCord.jar
pre-stop script
screen -S BungeeCord -X foo "end^M"
end script
Run Code Online (Sandbox Code Playgroud)
据我所知,脚本似乎工作正常,我可以运行sudo start bungeecord
并获得预期的结果,但是,重新启动机器不起作用。相反,我在以下内容中收到此错误/var/log/upstart/bungeecord.log
:
Cannot make directory '/var/run/screen': Permission denied
Run Code Online (Sandbox Code Playgroud)
我查了这个错误,搜索结果是模糊的和不确定的。我试过以 root 身份运行命令,这消除了错误,但仍然没有screen
会话。我试过不同的命令是这样的:
su ridog -c "screen -dmS BungeeCord java -jar /home/ridog/BungeeCord/BungeeCord.jar"
Run Code Online (Sandbox Code Playgroud)
Ril*_*nch -1
问题解决了,我从使用切换upstart
到使用cron
。它变得简单多了,现在一切都很好。
对于阅读本文的任何人可能对我是如何做到的感到好奇,我做了一个简单的shell script
:
#!/bin/bash
java -Xms256M -Xmx256M -jar /home/ridog/BungeeCord/BungeeCord.jar
Run Code Online (Sandbox Code Playgroud)
并将其设置为在启动时运行,并在以下位置添加新行crontab -e
:
@reboot screen -dmS BungeeCord sh /home/ridog/BungeeCord/run.sh
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!