当前位置: 首页 > 科技观察

如何在重启或开机时执行命令或脚本

时间:2023-03-14 17:55:44 科技观察

众所周知,Linux可以在开机时添加服务。例如,如果你想在启动时添加ApacheHttpd服务,你可以借助chkconfig和systemctl命令来完成。有时您需要在启动时添加自定义脚本、命令或服务,怎么办?您可以使用以下三种方法来完成。在本文中,我们将通过示例向您展示如何使用这些方法。方法一:如何使用/etc/rc.d/rc.local文件在重启或开机时运行脚本或命令在计算机正常服务启动后执行。此方法也适用于systemd系统。您需要将脚本位置添加到/etc/rc.d/rc.local文件以在启动时运行。确保该文件具有运行权限:#chmod+x/etc/rc.d/rc.local作为演示,我们将创建一个简单的示例脚本。您可以创建任何您想要的脚本。#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方法二:如何使用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服务unitsonreboot或在启动时运行命令或脚本此方法仅适用于systemd系统。方法很简单。我们将使用上面相同的脚本进行演示。为此,您需要创建一个systemd启动脚本并将其放在/etc/systemd/system/目录中。这是我们的示例systemd启动单元脚本:#visample-on-boot-script.service[Unit]Description=RunaCustomScriptatStartupAfter=default.target[Service]ExecStart=/opt/scripts/run-script-on-boot.sh[Install]WantedBy=default.target在systemd所在位置放置unit脚本后,运行如下命令更新systemd配置文件并开启服务:#systemctldaemon-reload#systemctlenablesample-on-boot-脚本。service重启系统检查:#reboot附加提示如果要后台运行脚本,需要在末尾添加&符号/Path/To/My_Script&如果要以不同用户身份运行命令,使用以下格式:su-$USER-c/Path/To/My_Script