Manjaro开机自启动脚本实现 · Issue #2 · MregXN/Blogs · GitHub 您所在的位置:网站首页 manjaro开机自启 Manjaro开机自启动脚本实现 · Issue #2 · MregXN/Blogs · GitHub

Manjaro开机自启动脚本实现 · Issue #2 · MregXN/Blogs · GitHub

2024-04-07 15:53| 来源: 网络整理| 查看: 265

Manjaro开机自启动脚本实现 前言

是的没错,在试遍了网上所有我能查到的脚本自启动的方法都失败了以后,我才气得整理了上一篇issue,并不是真的对开机过程感兴趣 - -

不过恶补完这里的知识盲区之后.我也逐渐明白了失败的原因:

网络上的方法大部分是在启动初始化程序时做做手脚(上一篇issue(Linux开机流程整理)中有整),而我所使用的manjaro发行版早已经弃用了这种模式,转而采用了systemd,以下是用ArchWiki查找init时的原话:

Warning: Arch Linux only has official support for systemd. When using a different init system, please mention so in support requests.

所以在我的/etc目录下并没有init文件夹和init.d文件夹,更别说在其中配置所谓的自启动脚本了

至于用systermd完全替代init系统到底孰优孰劣,后头若有空可以再开一篇issue整整,今天这篇主要是记录如何利用systemd实现archlinux的个性化开机

笔记 systemd

systemd的文件主要存放在/usr/lib/systemd 目录中,有系统(system)和用户(user)之分

/usr/lib/systemd/system/ #开机不登陆就能运行 /usr/lib/systemd/user/ #登陆后运行

每一个服务以.service结尾,文件内一般会分为3部分:[Unit]、[Service]、[Install]

[Unit] 主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别

[Service] 是服务的关键,是服务的一些具体运行参数的设置,

Type=forking是后台运行的形式,

PIDFile为存放PID的文件路径,

ExecStart为服务的具体运行命令,

ExecReload为重启命令,

ExecStop为停止命令,

PrivateTmp=True表示给服务分配独立的临时空间

注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

[Install] 是服务安装的相关设置,可设置为多用户的

步骤

以我为例,我需要在每次开机时配置自己的扩展显示器 (因为默认只能到 1240*768???所以重启都需要手动添加新的模式???暂时还没找到什么更好的方法 )

setmonitor.sh

#!/bin/bash sudo xrandr --newmode "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync sudo xrandr --addmode DP1 1680x1050 echo "successfully run the code!!!!!!!!!!!!!!!!!!!!"

保存在autostart文件夹(当然任意都行),并给脚本赋予执行权限

sudo chmod 0755 /home/mregxn/autostart/setmonitor.sh

setmonitor.service

[Unit] Description=run shell script [Service] ExecStart= /home/mregxn/autostart/setmonitor.sh Type = simple [Install] WantedBy=multi-user.target

文件保存到/usr/lib/systemd/system/路径下,利用systemctl指令配置开机启动

systemctl enable setmonitor.service

重启后利用systemctl status查看setmoniter.service的运行状态,可以发现虽然配置的时候出了问题(...暂时还找不着办法解决) ,但这一波操作确实成功实现了利用systemd开机自动运行用户自定的脚本

Feb 09 21:36:49 mregxn-pc systemd[1]: Started run shell script. Feb 09 21:36:49 mregxn-pc sudo[521]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr./bin/xrandr --newmode 1680x1050 146.25 168 Feb 09 21:36:49 mregxn-pc sudo[521]: pam_unix(sudo:session): session opened for user root by (uid=0) Feb 09 21:36:49 mregxn-pc setmonitor.sh[517]: Can't open display Feb 09 21:36:49 mregxn-pc sudo[521]: pam_unix(sudo:session): session closed for user root Feb 09 21:36:49 mregxn-pc sudo[552]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/xrandr --addmode DP1 1680x1050 Feb 09 21:36:49 mregxn-pc sudo[552]: pam_unix(sudo:session): session opened for user root by (uid=0) Feb 09 21:36:49 mregxn-pc setmonitor.sh[517]: Can't open display Feb 09 21:36:49 mregxn-pc sudo[552]: pam_unix(sudo:session): session closed for user root Feb 09 21:36:49 mregxn-pc setmonitor.sh[517]: successfully run the code!!!!!!!!!!!!!!!!!!!!


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有