之所以要在 sh 中给 screen 传递命令是因为阿里云的 99 的服务器实在是太拉跨了,并且经常会出现各种诡异的 cpu 跑满的情况。目前上面部署了几个静态站点还有 umami 的统计。
先介绍下 screen:
screen是linux下的一种视窗多重复用管理程序。在使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。
umami、moe-conter 都是通过 screen 启动的,这就导致如果服务器重启了就得重新启动 screen,然后在 screen 中运行命令来启动服务。
阿里云的服务器经常莫名其妙 cpu 就 100 了,当然也可能是收到了攻击,但是具体情况感觉还是太频繁了,此时最简单的办法就是直接强制重启。
如果直接把要执行的命令加到 screen 命令之后写入到 sh 脚本,命令无法正常运行。合格的写法应该是下面的样子(一种形式,还有其他形式):
screen -S moe -dmS screen -x -S moe -p 0 -X stuff "cd /root/Moe-Counter " screen -x -S moe -p 0 -X stuff "sh start.sh "
注意screen -x -S moe -p 0 -X stuff “cd /root/Moe-Counter 一行指令是回车换行编写的,相当于把回车代入到了 cd 命令后面,这样写的好处是省去了插入回车,也可以用下面的写法:
screen -xS screenName -p0 -X stuff $'\n'
$’\n’ 代表回车,我觉得直接换行是最简单的。
有了启动脚本,剩下的就是编辑服务,添加自启动功能:
vim /etc/systemd/system/myautostart.service
创建自定义服务,添加代码:
[Unit] Description=My autostart Service After=network.target [Service] User=firefly ExecStart=/root/sh/start_all.sh Restart=always RestartSec=1 [Install] WantedBy=multi-user.target
重新加载服务:
systemctl daemon-reload
此时在重启,服务就可以自动启动了,省去了人工启动的麻烦。
26 comments
沙发
这 纹身和腿太明显了 下面的文章和代码都没心思看了😂
腿太粗了是吧?😂
不是不是 是纹身有创意😂😂
screen 启动是啥意思?是桌面linux界面么
screen是linux下的一种视窗多重复用管理程序。在使用telnet或SSH远程登录linux时,如果连接非正常中断,重新连接时,系统将开一个新的session,无法恢复原来的session.screen命令可以解决这个问题。
我记起来了,我也用过这个命令,有些命令执行很久的,如果断开连接就会终止执行,这个命令可以解决 ,裙子也越来越短了,好看
是哒
过来看看
欢迎
不想要的阿里云可以来我这里换一枚 follow 邀请码。
自动化提高效率。不错。
嗯嗯 不然就得重启了 上去再逐个启动 太烦人了
代码大佬都喜欢用Vim
主要是ssh连上去 实在没的用啊 哈哈
我一般用pluma,但是没在ssh上试过。
没用过这个 好用吗?
桌面下挺好用。
牛蛙!已经深秋了,妹子腿不冷吗?
屋里还好啊
灵妹妹美大腿的图案是什么,我记得脚上是蝴蝶,这个不会是蜜蜂吧?
魅纹
搭建博客需要什么技术呀?
linux常用命令,买个域名,买台服务器就可以了。
如果不想自己搭建直接去wordpress上开个账号也行