前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务器开机启动,你还在用rc-local吗?大神都用服务(service)机制

服务器开机启动,你还在用rc-local吗?大神都用服务(service)机制

作者头像
用户10002156
发布2024-01-29 11:32:41
2750
发布2024-01-29 11:32:41
举报
文章被收录于专栏:生活处处有BUG生活处处有BUG

在最新版本的 systemd 中,已经不再推荐使用 rc-local 来运行自定义脚本或命令。相反,建议使用 systemd 的单位(unit)和服务(service)机制来管理和运行自定义脚本或命令。

创建服务

以下是在 systemd 中运行自定义脚本的一种常用方法:

1. 先创建个人的脚本

代码语言:javascript
复制
mkdir -p ~/shell
echo 'date >> /tmp/0825xj_tmp.txt' > ~/shell/startup_script.sh
chmod +x ~/shell/startup_script.sh

2. 到 /etc/systemd/system/ 目录下,创建一个 .service 文件,用于定义你的自定义脚本或命令的配置。创建一个类似于 startup_script.service 的文件,并将以下内容添加到文件中:

代码语言:javascript
复制
iniCopy Code[Unit]
Description=xiaojin Custom Script

[Service]
Type=forking
User=root
Group=root
ExecStart=/bin/sh /home/xj/shell/startup_script.sh

[Install]
WantedBy=default.target

/home/xj/shell/startup_script.sh 替换为实际的脚本路径。

3. 更新 systemd 配置并启用该服务:

代码语言:javascript
复制
sudo systemctl daemon-reload
sudo systemctl start startup_script.service
sudo systemctl status startup_script.service
sudo systemctl enable startup_script.service

这将重新加载 systemd 配置,并启用并启动你的自定义脚本服务。

4. 如果服务启动成功,你可以使用以下命令检查服务状态:

代码语言:javascript
复制
sudo systemctl status startup_script.service

5. 如果服务不能正常运行,可以使用命令查看服务运行日志,再根据日志信息去调整配置和服务。

代码语言:javascript
复制
sudo journalctl -f -u startup_script.service

从输出中,你可以查看服务是否正在运行以及是否存在任何错误或警告信息。

通过以上步骤,你可以使用 systemd 来管理和运行你的自定义脚本或命令。请确保将 /home/xj/tmp/test.sh 替换为实际的脚本路径,并确保具备足够的权限执行相关操作。

延时执行

开机后10分钟再执行

要在 Ubuntu 启动后延迟一段时间再执行脚本,你可以使用 systemd 的 systemd.timer 单元。

下面是一个示例配置,展示如何在启动后等待 10 分钟后执行一个脚本。

首先,创建一个定时器单元文件 /etc/systemd/system/delayed_script.timer,并将以下内容添加到文件中:

代码语言:javascript
复制
[Unit]
Description=Delayed Script Timer

[Timer]
OnBootSec=10min
Unit=delayed_script.service

[Install]
WantedBy=timers.target

然后,创建一个服务单元文件 /etc/systemd/system/delayed_script.service,并将以下内容添加到文件中:

代码语言:javascript
复制
[Unit]
Description=Delayed Script

[Service]
Type=forking
User=root
Group=root
ExecStart=/bin/sh /home/xj/shell/delayed_script.sh
ExecStop=umount /s3/vm-mars-private-cn

[Install]
WantedBy=default.target

请确保将 /path/to/your/script.sh 替换为你要延迟执行的实际脚本路径。

完成后,使用以下命令激活定时器并启用它:

代码语言:javascript
复制
sudo systemctl daemon-reload
sudo systemctl enable delayed_script.timer
sudo systemctl start delayed_script.timer
sudo systemctl status delayed_script.timer

这样,在 Ubuntu 启动后的 10 分钟之后,指定的脚本将被执行。

crontab

代码语言:javascript
复制
crontab -e

将此命令添加到文件的末尾

代码语言:javascript
复制
@reboot sh /home/xj/data/shell/boot_up.sh

测试

代码语言:javascript
复制
sudo umount /s3/vm-mars-saas-cn

mount-s3 --endpoint-url http://s3.cn-northwest-1.amazonaws.com.cn --region cn-northwest-1 vm-mars-saas-cn /s3/vm-mars-saas-cn/  

>> /home/xj/tmp/0906_boot_output.log 2>&1
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生活处处有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建服务
  • 延时执行
  • crontab
  • 测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档