在Ubuntu 20.04中设置开机自启动脚本

本文详细介绍了如何在Ubuntu20.04中创建并设置开机自启动脚本,包括创建systemd服务文件、配置服务内容,以及如何取消已设置的开机自启动。同时提供了注意事项和安全建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在Ubuntu 20.04中设置开机自启动脚本

在Ubuntu 20.04中设置开机自启动脚本,您可以使用systemd服务来实现。下面是如何将您的脚本设置为开机自启动的步骤:

  1. 创建systemd服务文件

首先,您需要为您的脚本创建一个systemd服务文件。您可以在/etc/systemd/system/目录下创建一个新的服务文件,例如orbbec-ros-install.service

打开终端并输入以下命令来创建和编辑服务文件:

sudo nano /etc/systemd/system/orbbec-ros-install.service

然后,在打开的文件中输入以下内容:

[Unit]
Description=Orbbec ROS SDK install script
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c "cd ~/orbbec_ws/src/orbbec-ros-sdk/script && sudo bash install.sh"

[Install]
WantedBy=default.target

注意:这里我们使用了Type=oneshot,因为您的脚本看起来是一个一次性任务,而不是一个持续运行的服务。如果您需要持续运行的服务,可能需要更改此设置。

  1. 重新加载systemd并启用服务

保存并关闭文件后,您需要告诉systemd关于这个新的服务文件:

sudo systemctl daemon-reload

然后,启用该服务以使其在启动时自动运行:

sudo systemctl enable orbbec-ros-install.service
  1. 注意
  • 使用sudo在systemd服务中通常是不推荐的,因为它可能导致权限和安全性问题。如果可能的话,尝试修改您的install.sh脚本,使其不需要sudo权限来运行。例如,您可以确保所有必要的文件和目录都有正确的权限。
  • ExecStart中,我们使用了/bin/bash -c来执行命令。这是为了确保我们首先cd到正确的目录,然后再执行脚本。但请注意,这仍然不是最佳实践,因为cd命令只影响当前shell的上下文,而不会影响后续命令。更好的做法是将完整的路径用于install.sh,并确保它具有正确的执行权限。

最后,重新启动您的计算机,您的脚本应该会自动运行。您可以使用以下命令检查服务的状态:

sudo systemctl status orbbec-ros-install.service

2. 取消上面的命令

要取消之前设置的开机自启动脚本,您可以按照以下步骤操作:

  1. 禁用并停止服务

首先,您需要禁用并停止之前设置的systemd服务。使用以下命令来禁用并停止服务:

sudo systemctl stop orbbec-ros-install.service
sudo systemctl disable orbbec-ros-install.service

stop命令会立即停止正在运行的服务(如果它正在运行的话),而disable命令会确保服务在下次系统启动时不会自动启动。

  1. 删除服务文件

接下来,您可以删除之前创建的systemd服务文件。使用以下命令:

sudo rm /etc/systemd/system/orbbec-ros-install.service

这将从系统中删除服务文件,从而完全移除开机自启动的配置。

  1. 重新加载systemd

为了确保systemd重新加载其配置并识别到服务文件已被删除,您可以再次运行以下命令:

sudo systemctl daemon-reload

这样,当您下次重启计算机时,之前设置的开机自启动脚本就不会再运行了。

请注意,取消开机自启动只是停止脚本在系统启动时自动执行。如果脚本之前已经被执行过并对系统做了某些更改,那么这些更改仍然会保留在系统中。如果需要撤销这些更改,您可能需要手动执行一些反向操作来恢复系统的状态。

### 设置开机自启动脚本 为了使脚本能够在Ubuntu 20.04系统启动时自动运行,可以通过多种方法实现这一目标。一种常见的方式是利用`Systemd`服务单元文件来定义启动任务。 创建一个新的服务文件位于 `/etc/systemd/system/`目录下,命名为 `myscript.service`: ```bash sudo nano /etc/systemd/system/myscript.service ``` 在该文件内编写如下配置[^1]: ```ini [Unit] Description=My custom script at boot time. [Service] ExecStart=/path/to/script.sh WorkingDirectory=/path/to/ StandardOutput=file:/var/log/mycustomscript.log Restart=always User=username [Install] WantedBy=multi-user.target ``` 上述配置项解释: - **Unit**部分描述了此服务的作用; - **Service**部分指定了要执行的具体命令以及工作路径等参数; - **Install**部分决定了何时激活这个服务,在这里是多用户模式下被触发。 保存并关闭编辑器之后,需要重新加载 systemd 配置以便识别新的服务文件: ```bash sudo systemctl daemon-reload ``` 启用新创建的服务使其随系统一起启动,并立即启动它以测试是否正常运作: ```bash sudo systemctl enable myscript.service sudo systemctl start myscript.service ``` 如果一切顺利的话,现在就可以重启计算机验证脚本能否按预期那样于每次开机会自动被执行了。 对于较为简单的命令或指令集,则可以直接将其加入到用户的crontab中通过 @reboot 来指定它们应该在系统重引导后立刻运行。这同样适用于那些不需要复杂环境准备的任务。 另外需要注意的是,当涉及到图形界面登录会话中的程序自动化时(比如桌面环境中),应当考虑采用其他机制如GNOME Shell扩展或者特定于DE的应用程序设置工具来进行处理而不是依赖传统的init方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值