有时你须要在启动时添加自定义脚本、命令或服务,该如何做?
众所周知Linux可以在启动时添加服务。诸如linux 关机前执行脚本linux之家,假如要在启动时添加ApacheHttpd服务wps for linux,你可以在chkconfig和systemctl命令的帮助下完成此操作。
有时你须要在启动时添加自定义脚本、命令或服务,该如何做?你可以使用以下三种方式来做到。
在本文中,我们将通过示例向你展示怎样使用这种技巧。
方式1:怎样使用/etc/rc.d/rc.local文件在重启或启动时运行脚本或命令
传统上,/etc/rc.local文件是在切换到多用户运行级别的过程结束时,在所有正常的计算机服务启动以后执行的。
此方式也适用于systemd系统。
你须要将你的脚本位置添加到/etc/rc.d/rc.local文件中以在启动时运行。
确保该文件有运行权限:
# chmod +x /etc/rc.d/rc.local
作为演示linux 关机前执行脚本,我们将创建一个简单的示例脚本。你可以按照须要创建任何脚本。
# vi /opt/scripts/run-script-on-boot.sh#!/bin/bashdate > /root/on-boot-output.txthostname >> /root/on-boot-output.txt
脚本完成后,设置可执行权限:
# chmod +x /opt/scripts/run-script-on-boot.sh
最后,将该脚本添加到文件顶部:
# vi /etc/rc.d/rc.local/opt/scripts/run-script-on-boot.sh
重启系统进行检测:
# reboot
方式2:怎样使用crontab在重启或启动时执行命令或脚本
cron在特定时间在后台手动执行计划的作业。可以在cron任务中使用特殊的字符串@reboot来完成。@reboot是一个特殊的字符串,它容许用户在启动时运行任何命令或脚本。
此示例在系统重启时运行/opt/scripts/run-script-on-boot.sh文件。我们将使用与前面相同的脚本。
因此,只需在crontab文件中添加以下条目:
# crontab -e@reboot /opt/scripts/run-script-on-boot.sh
重启系统进行检测:
# reboot
方式3:怎样使用systemd服务单元在重启或启动时运行命令或脚本
此方式仅适用于systemd系统。该方式十分简单。
我们将使用前面相同的脚本进行演示。
因此,你须要创建一个systemd启动脚本并将其置于/etc/systemd/system/目录中。
这是我们的示例systemd启动单元脚本:
# vi sample-on-boot-script.service[Unit]Description=Run a Custom Script at StartupAfter=default.target[Service]ExecStart=/opt/scripts/run-script-on-boot.sh[Install]WantedBy=default.target
将单元脚本放置在systemd所在位置后,运行以下命令更新systemd配置文件并启用服务:
# systemctl daemon-reload# systemctl enable sample-on-boot-script.service
重启系统进行检测:
# reboot
额外提示
假如你想在后台运行脚本,你须要在最后加上&符号
/Path/To/My_Script &
假如你想以不同用户运行命令,使用以下格式:
su - $USER -c /Path/To/My_Script