baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 华仔聊技术

  • 业务设计

  • 场景设计

  • 运维

  • 安全

  • 面试

  • mac相关工具推荐

  • 开发工具

    • git安装后怎么做
    • git介绍
    • git常用命令
    • git三剑客
    • git标签详解
    • merge的方式
    • 记一次git rebase操作
    • 持续集成、持续交付、持续部署
    • 开机自启脚本方法
      • 背景
      • 一.systemd系统
        • 自启举例
        • 步骤
      • 二.mac系统
      • 常见问题
        • 权限问题
    • shell语法
    • 解决mac安装软件后显示已经被损坏
    • 不同序列化工具性能测试
    • JMH测试工具介绍
  • 人工智能

  • 推荐

  • 阅读

  • 工具

  • 计划

  • 产品

  • 云原生

  • go

  • QVM

  • 软件设计师

  • 极客时间

  • 单元测试

  • 其他
  • 开发工具
xugaoyi
2023-02-24
目录

开机自启脚本方法

# 背景

我在使用mac的过程中,下载了一些如zookeeper、redis等软件,但是每次启动的时候,

  • 我可能需要重新去对应的路径下使用shell命令启动一次。
  • 长时间不用,下一次需要使用可能会忘记安装的路径在哪里,可能会忘记启动命令是什么。

如果我们可以让电脑在开机时能够自行启动,那么以上的问题都可以轻松的解决

# 一.systemd系统

什么是systemd

你正在运行一个基于 systemd 的操作系统,传统的 init 脚本已被本地的 systemd 服务文件所取代。服务文件提供了非常类似于 init 脚本的功能。要使用服务文件,只需调用 "systemctl" 命令,它将输出所有当前运行的服务(和其他单元)的列表。使用 "systemctl list-unit-files" 命令获取所有已知单元文件的列表,包括已停止、禁用和屏蔽的单元文件。使用 "systemctl start foobar.service" 和 "systemctl stop foobar.service" 分别启动或停止一个服务。有关更多详细信息,请参考 systemctl(1)。

请注意,在 systemd 系统上,传统的 init 脚本仍然能够正常工作。在系统初始化期间,init 脚本 /etc/rc.d/init.d/foobar 会被隐式映射到一个服务单元 foobar.service 中。

使用ps -ef | grep systemd查看是否是systemd系统

image-20230225150627147

# 自启举例

linux很多都是用过systemd来进行开机执行的shell

例如以下命令大家有可能都是用过:

#启动:
sudo systemctl start httpd
#重启:
sudo systemctl restart httpd
#停止:
sudo systemctl stop httpd
#设置开机启动:
sudo systemctl enable httpd
1
2
3
4
5
6
7
8

那如果我们也想要编写一个shell脚本,让开机的时候能够自行启动的话呢?

# 步骤

  1. 首先,我们需要先写好我们对应的开机脚本,并cd到对应的文件目录

例如:

cd /home/tommy
1
  1. 编写相关的service文件(重要)

只需要修改 ExecStart 和 ExecReload 等为你需要执行的 shell 脚本即可

[Unit]
Description=
Documentation=
After=network.target
Wants=
Requires=

[Service]
ExecStart=/home/downey/test.sh  # 使用start命令时使用的脚本
ExecStop=
ExecReload=/home/downey/test.sh # 机器重启时使用的脚本
Type=simple

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  1. 将 service 脚本放到 /etc/systemd/system/ 或者 /usr/lib/systemd/system 目录

    cp /路径/test.sh /etc/systemd/system/
    
    1
  2. 测试启动

sudo systemctl start test.service
1
  1. 添加开机启动
sudo systemctl enable test.service
1
  1. 重启检查一下 设置是否生效
reboot
1
  1. 查看systemd服务状态
ps -ef|grep test.service
1

# 二.mac系统

  1. 编写一个shell脚本
  2. 修改shell文件的脚本为
sudo chmod 777 run.sh
1

3、右键点击run.sh->显示简介,主要将打开方式修改为终端,共享和权限将所有权限打开。

img

img

img

4、进入系统偏好设置->用户与群组->登陆项,将haha.sh添加到登陆项,并勾选前面的隐藏选项卡,重新启动即可。

img

5.验证:

现在 Documents目录下不存在文件夹

img

重启电脑后,再看一下这个文录,已经有haha文件夹了,说明run.sh脚本开机已经自启动了

img

# 常见问题

# 权限问题

自动执行某些脚本,因为用户还没有登录导致权限不足

在shell脚本中使用sudo命令,可以通过配置sudoers文件来避免需要手动输入密码。

以下是一些步骤来设置sudoers文件:

  1. 打开终端并输入以下命令以编辑sudoers文件:
Copy code
sudo visudo
1
2
  1. 在sudoers文件中添加一行来允许指定的用户执行sudo命令而不需要输入密码。例如:
sqlCopy code
yourusername ALL=(ALL) NOPASSWD: ALL
1
2

请将"yourusername"替换为你的用户名。

  1. 保存并退出sudoers文件。

现在,你可以在shell脚本中使用sudo命令而不需要输入密码。

例如,如果你想在shell脚本中以root权限创建一个名为“testfile”的文件,你可以使用以下命令:

bashCopy code
sudo touch /path/to/testfile
1
2

另外如果还是不行,建议将受影响的目录修改权限

chmod -R 777 /path
1
编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
持续集成、持续交付、持续部署
shell语法

← 持续集成、持续交付、持续部署 shell语法→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式