Ubuntu设置脚本、程序开机自启动

2023-11-03

方法1:修改/etc/rc.local

修改/etc/rc.local
在/etc/rc.local的exit 0语句之间添加启动脚本。脚本必须具有可执行权限。

方法2:用update-rc.d命令添加开机执行脚本

用update-rc.d命令添加开机执行脚本
创建要开机自动执行的脚本:/home/test/blog/startBlog.sh,并给予可执行权限:chmod +x /home/test/blog/startBlog.sh。

在/etc/init.d目录下创建链接文件到前面的脚本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog。

进入/etc/init.d目录,用 update-rc.d 命令将连接文件 startBlog 添加到启动脚本中去:update-rc.d startBlog defaults 99。
其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。

移除启动的脚本:update-rc.d -f startBlog remove。
-f选项表示强制执行。

方法3:使用 crontab

大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。

我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot ,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。

那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过 crontab -e 来设置。

$ crontab -e

@reboot /home/alvin/auto_run_script.sh
然后,直接重启即可。运行的效果跟上面类似。

方法4:使用 systemd 服务(Centos)

以上介绍的两种方法,在任何 Linux 系统上都可以使用。但本方法仅适用于 systemd 系统。如何区分是不是 systemd 系统?很简单,只需运行 ps aux 命令,查看 pid 为 1 的进程是不是 systemd 。

为了实现目的,我们需要创建一个 systemd 启动服务,并把它放置在 /etc/systemd/system/ 目录下。
我们创建的 systemd 启动服务如下。请注意,这时后缀是 .service ,而不是 .sh 。

$ vim auto_run_script.service
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/home/alvin/auto_run_script.sh
[Install]
WantedBy=default.target
从服务的内容可以看出来,我们最终还是会调用 /home/alvin/auto_run_script.sh 这个脚本。
然后,我们再把这个脚本放置在 /etc/systemd/systerm/ 目录下,之后我们再运行下面两条命令来更新 systemd 配置文件,并启动服务。

$ systemctl daemon-reload
$ systemctl enable auto_run_script.service

万事俱备之后,我们就可以重启系统啦。
$ reboot

在shell脚本中运行C语言可执行程序,最好写绝对路径,不需要加点.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu设置脚本、程序开机自启动 的相关文章

  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • systemd 错误“无法启动服务:单元服务未正确加载:exec 格式错误”

    我可以执行准确的ExecStart来自 shell 的命令并且它可以工作 但是由于某种原因在此服务文件中这不起作用 有什么想法吗 error Failed to start previewapi service Unit previewap
  • Bash for Windows 10 gcc 不会编译粘贴到根目录中的 c 文件

    正如标题所示 如果我将在其他地方编写的c文件粘贴到Linux子系统的根目录中 则无法编译它 我做了一个测试 我制作了两个不同标题的 hello world 程序 一个在 vi 中 我可以从 bash 界面进入 另一个在其他地方 当我编译了
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • Ubuntu 中的颜色选择器实用程序(颜色移液器)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • CMake 链接 glfw3 lib 错误

    我正在使用 CLion 并且正在使用 glfw3 库编写一个程序 http www glfw org docs latest http www glfw org docs latest 我安装并正确执行了库中的所有操作 我有 a 和 h 文
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 使用包管理器时如何管理 Perl 模块?

    A 最近的问题 https stackoverflow com questions 397817 unable to find perl modules in intrepid ibex ubuntu这让我开始思考 在我尝试过的大多数 Li
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 从网络中的另一台计算机访问本地GAE SDK服务器

    我有开发服务器 来自 google appengine sdk 在我的 Ubuntu 计算机上运行 我可以通过导航到 localhost 8080 来访问我的网站 我想从网络中的另一台计算机 装有 Vista 操作系统 访问该站点 ifco
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se

随机推荐

  • 圈圈教你玩转USB第三版 光盘资料

    下载官网 http service buaapress com cn mzs file detail id 2199 key b2fec916cc9fa216abe6fc836e3f7e35
  • Swift中的‘open‘关键字是什么?

    本文翻译自 What is the open keyword in Swift The ObjectiveC swift file from the standard library contains the following few l
  • C语言基础代码(1)

    C语言是计算机及其相关专业学生必修的语言 我在大一下学期就已经学习了 前段时间 我又将谭浩强编写的C程序设计 也就是我C语言学习的课本看了一遍 温故而知新 受益良多 于是就萌发了一个想法 想将C语言学习当中一些基础的代码做一个总结归纳 在总
  • 牛客专项练习之设计模式

    开头先一句水平有限 仅供参考 有错误可以提醒我改一下 感谢 1 如果需要一个语言解释执行 并且可以将语言中的句子表示为一个抽象语法树的时候 对效率要求不高的情况下 应该选择何种设计模式 题目中的解释二字就告知选项 解释器模式 给定语言 定义
  • Nginx额外篇之一些错误解决办法

    错误1 配置了Nginx 但是打开页面是乱码 解决办法如下 在你个人的sever端添加如下2行 default type text html 设置内容输出内容型为 html htm shtml 三种类型 charset utf 8 设置字符
  • java导出word,红色的单元格背景色显示为黑色

    之前有这个问题 当我用正版office看导出word文件的时候 单元格背景是红色 当我换wps看导出的文件的时候 单元格背景是黑色的 离谱 所以我当初为了省事直接和客户说 请使用正版office 狗头 然后今天闲着没事情 再看ftl模板的时
  • 001问

    偶然间 我的好朋友问起我这个问题 我还真没有好好思考过这个问题 我查了Go语言圣经 知名博客 以及Go中文文档 发现都没有阐述这个问题 后来找来找去也只有下面的解释 for的初始化语句不能是任何类型的语句 必须是 简单语句 短变量声明 就是
  • Th5.6:智能指针(unique_ptr)之详述1

    本小节学习的知识点分别是智能指针 unique ptr 之详述 常用操作 今天总结的知识分为以下2个大点 1 unique ptr概述 常用操作 1 1 常规初始化 unique ptr和new配合 1 2 make unique 函数 2
  • 转:idea中language level设置

    一 idea中项目的language level的含义 language level指的是编译项目代码所用的jdk版本 那么 从这个定义出发会有两个小问题 第一 如果project sdk是jdk8 那么language level应该是多
  • 在顺序表中插入元素_C语言 一看就懂

    一看就懂的数据结构带注释 数据结构 在顺序表中插入元素 C语言版 头文件和定义结构体 include
  • ECOLOGY 9.0 新增SAP批量选择功能并将数据填充到明细表

    需求来了 在明细表一的抬头处增加SAP多选功能 如下图 1 打开明细表一 2 打开集成按钮 3 右键后 点击批量编辑 4 点击明细表1后 继续点击多选浏览按钮配置SAP接口 5 配置SAP接口函数 6 字段配置完了后 勾选要显示的字段 不然
  • Qt 判断信号是否绑定了

    本文介绍Qt的信号是否被连接了和信号槽之间的参数是否一致的判断方法 1 判断信号是否正确连接 通过判断connect的返回值是否为true 1 bool ok connect this SIGNAL signal1 this SLOT sl
  • 如何选择云上业务的安全防护产品?

    古人云 没有绝对的安全 只有相对的安全 云计算作为业务的部署方式 已经逐渐被人们所接受 云模式也逐渐成为很多企业的重要选择 如何保证云上业务系统的安全 已经成为每一个上云企业必须要面对的问题 作为一个对安全技术不是那么专业的运维管理人员 如
  • 图片识别工具Tesseract介绍和python搭配使用

    Tesseract介绍和Python的搭配使用 一 Tesseract介绍 下载指南 1 了解Tesseract工具 2 下载地址 3 请注意 二 环境搭建 2 1 版本3 05安装 2 2 最新版本安装 2 3 环境搭建 2 4 举个栗子
  • Keil5 出现error: #28:expression must have a constant value的解决办法

    我们在进行编译的时候可能会出现下图的错误 出现这种错误的话 可能是以下两种问题情况 1 可能是在对变量应用的时候没有进行先声明后调用 这是编译器自身的问题 我们可以去Options for Target 选择C C 再勾选C99 Mode就
  • SQL 增、删、改、查基本语法

    create table student stid int primary key auto increment stname VARCHAR 20 stbirth DATE auto increment 1000 插入数据 insert
  • mysql下载地址

    点击下载
  • Java赛马程序

    编写一个多线程的控制程序 称为赛马程序 创建分别代表两匹马的两个线程 并将它们设置为高低不同的优先级 并以进度条的形式显示赛马过程 没几天Java要考试了 紧急学习一下再把之前参考 10条消息 Java多线程 进度条实现赛马实验 shall
  • 贪心算法:55.跳跃游戏(C++)

    class Solution public bool canJump vector
  • Ubuntu设置脚本、程序开机自启动

    Ubuntu设置脚本 程序开机自启动 方法1 修改 etc rc local 方法2 用update rc d命令添加开机执行脚本 方法3 使用 crontab 方法4 使用 systemd 服务 Centos 注 方法1 修改 etc r