linux - vps重启时自动启动脚本?
问题描述
我有一个安装了一些服务器的 vps linux ubuntu 16.04。
我厌倦了一直手动重启我的服务器。我能做些什么来解决这个问题?
我的服务器以“屏幕”运行
当我需要重新启动服务器时,我需要这样做:
- (打开屏幕)< Screen -r "ScreenName" >
- (进入文件夹)< cd /home/server/ >
- (启动服务器)< ./server.sh >
- (关闭屏幕)< ctrl a+d >
有没有办法在重新启动服务器时自动执行所有这些步骤?
谢谢。
解决方案
我要做的是onboot.sh
在我的主目录中有一个文件。该文件的内容将是:
#!/bin/bash
cd /home/server
screen -Ldm -S ScreenSessionName bash server.sh
L
是可选的。它将screenlog.0
在包含脚本输出日志的目录中创建一个名为的文件。-S
设置会话名称。-d
创建屏幕后分离屏幕并-m
强制创建新的屏幕会话。
对于要在启动时运行的脚本,我使用cron
. 在我的情况下,我使用sudo crontab -e
编辑 root 用户的 crontab 并附加以下行:
@reboot sudo -u username bash /home/username/onboot.sh
这将onboot.sh
作为给定用户运行。如果您希望它以 root 身份运行,您可以简单地输入
@reboot bash /home/username/onboot.sh
在 crontab 里面。
如果您只需要一个脚本,则更快的方法:
crontab -e
以您希望server.sh
脚本运行的用户身份执行。
附加以下行:
@reboot cd /home/server && screen -Ldm -S ScreenSessionName bash server.sh
保存文件。而已。
推荐阅读
- react-native - 我正在使用'react-native-dropdown-picker';我想在 react native 中显示从 sqlite db 到下拉列表的值,我该怎么做?
- r - 如何从由列表和向量组成的矩阵中删除包含 NULL 的单元格?
- r - 向多折线图添加图例和数据标签
- rust - UnixStream::send 是否有可能返回 EWOULDBLOCK?
- javascript - 有没有办法在反应中映射一组对象并从 cloudinary 获取相关图像
- django - 我正在使用 ajax 设置上传数据的视图,但它仅适用于第一项
- kendo-ui - 编辑模式期间的剑道网格禁用字段
- python - 在这种情况下,“如果某事 == 真”和“如果某事:”有什么区别?
- aws-lambda - 有什么方法可以检查 lambda 函数是否在给定时间内空闲?
- ansible - Ansible如何使用expect回答密码重置提示?