浏览器保存插件
【转帖】主流显卡H265、VP9硬件解码支持情况 - 知乎
Caddy – 方便够用的 HTTPS server 新手教程_weixin_34279184的博客-CSDN博客
亂數假文產生器 - Chinese Lorem Ipsum
Caddy实战- CSDN搜索
【如何优雅地写博客】利用h5ai自建一个视频床!
【如何优雅地写博客】自建一个永不裂开的图床!
小爱同学网络唤醒(Wake on Lan,WOL)启动电脑 - 知乎
安全的内网穿透保姆级教程,使用nginx反向代理给内网设备实现双向ssl认证,阻止无证书用户暴力破解nas|网卡|主机|内网穿透_新浪新闻
解决BCM94360CD 4天线,在windows10下蓝牙耳机断断续续问题
内网穿透 篇三:安全的内网穿透保姆级教程,使用nginx反向代理给内网设备实现双向ssl认证,阻止无证书用户暴力破解nas_NAS存储_什么值得买
5分钟了解游戏加速器的原理与搭建 - 知乎
解决BCM94360CD 4天线,在windows10下蓝牙耳机断断续续问题 | 粘贴怪
# PS2 重装机兵 沙尘之锁攻略
前线任务4攻略上
前线任务4攻略下
前线任务4系统详解
前线任务5详细流程攻略
Potplayer + LAVFilters + madVR 配置教程
linux 启动服务后台运行,linux后台启动任务
openwrt管理后台使用caddy代替uhttpd
编译caddy替代openwrt的uhttpd
如何获取Bing每日图片并作为网站背景图使用?
Bing每日壁纸API
一分钟自建zerotier-plant
zerotier的planet服务器(根服务器)的搭建踩坑记。无需zerotier官网账号
anylink
在 Linux 系统下使用迅雷远程离线下载
docker修改Docker容器启动配置参数
opkg 全部更新
甲骨文云 开户root,防火墙
UNRAID增加和缩小虚拟机虚拟磁盘大小
cm311-1a有2个IP的原因
榨干性能!魔百和CM311-1a KVM Openwrt& Docker安装以及Tailscale内网穿透保姆级教程_NAS存储_什么值得买
openwrt tailscale
UNRAID增加和缩小虚拟机虚拟磁盘大小
详解OpenWrt路由器设置Crontab定时检查网络并重启
Debian如何更换apt源
debian11 配置samba服务 linuxsys
debian11 配置samba服务
Debian 部署安装 Clash
防止甲骨文永久免费的计算实例被回收
怎么查看docker启动参数
Docker中Jellyfin开启硬件加速(Intel QuickSync)
Ext4文件系统修复
armbian显示系统信息的脚本-斐讯无线路由器以及其它斐迅网络设备-恩山无线论坛 - Powered by Discuz!
armbian显示系统信息的脚本
Linux 让终端走代理的几种方法
网站推荐
通过KMS方式激活 Windows 11 系统
各种显卡H265/HEVC/VP9/AV1格式4K和8K视频硬解码支持列表
unraid安装clash 及启用http代理_NAS存储_什么值得买
常见软路由/NAS/低功耗处理器对比 2020.12
1130-白嫖者联盟
Debian-Linux配置网卡网络方法
光猫桥接模式下,通过路由器访问光猫.简单设置
Docker一键脚本安装脚本(可选安装Docker Compose)
tgapi推送教程
UNRAID 使用自定义证书教程
只有 3MB 的自签名证书制作 Docker 工具镜像:Certs Maker
如何制作和使用自签名证书
通过Nginx Proxy Manager反代访问unraid管理页面
unRAID 篇十:unRAID 6.10.3远程管理并开启SSL访问_软件应用_什么值得买
unRAID 篇十一:unRAID 篇十:unRAID 6.10.3远程管理并开启SSL访问-填坑_软件应用_什么值得买
入正 Unraid ! 6.10 更新了什么?证书如何配置?
NAS那些事儿 篇一:纯IPV4访问纯IPV6且内网穿透_NAS存储_什么值得买
甲骨文Oracle取消强制修改密码
用uci配置openwrt防火墙
捡垃圾 篇八:花30元实现你的平价sonos——音响升级DLAN和Airplay,附上平价音响推荐_蓝牙音箱_什么值得买
3 分钟教你解锁 Sonos 和小爱等智能音箱的 AirPlay 功能_软件
CentOS7、ubuntu正确挂载网络磁盘方法
全网首发,没有比这更快的视频下载方法!
黑苹果硬件配置推荐,铭瑄MS-挑战者 H510ITX主板,安装真的很简单
黑苹果硬件配置推荐,铭瑄MS-挑战者H510ITX主板,安装真的很简单
openwrt 一键更新所有软件 opkg upgrade all packages
黑猴子的家:华为 OpenEuler(欧拉) Linux 之基本配置 - openEuler-20.03-LTS
免费翻墙,批量vless节点,反代伪装网页,轻松跑满本地宽带
小米(Mi) 6小米(Mi) 6 手机刷 TWRP 方法,刷三方Recovery方法(解决卡米问题)刷机解锁
debian12版本默认SSH不让ROOT账户远程登录解决方案(重置密码)
Debian安装Oh-my-zsh
【转发】zsh中 配置显示完整路径
如何在Linux系统中查看CPU温度
Fedora 启动 SSH服务 - 学海无涯1999 - 博客园
Bash命令行显示当前用户的完整路径
使用YUM安装docker
Linux 中的 ls 命令使用教程
Linux系统资源监控工具(top,htop,glances)
UNraid安装HomeAssistant与智能家庭部署_智能家居_什么值得买
Home Assistant如何安装配置HACS(hacs安装配置图文教程)
Homeassistant安装HACS_china(HACS)和ha_file_explorer(文件管理器) - kccic - 博客园
zsh 环境变量无法正常工作ShellClash
LInux远程文件传输效率工具:lrzsz
Windows 上的 Linux 子系统:WSL
Docker 无法启动 Failed to start LSB: Create lightweight, portable, self-sufficient containers.
一键安装docker(命令)
xiaoya全家桶系列教程:原版小雅、alist-tvbox、小雅-emby
Oracle OCI甲骨文云VPS启用原生IPv6
systemctl配置管理文件详解
Linux系统服务神器:systemctl的配置与使用 - 掘金
使用 oh-my-zsh 找不到 shellclash
ps2022总是提示需要访问钥匙串秘钥怎么解决?
在 macOS 中使用 Parallels Desktop 虚拟机安装 OpenWrt | Sukka's Blog
HP t430 Q&A
折腾 HP T430 Thin Client
惠普HP t430安装openwrt,配置旁路由,附跑分
联通GPON/4+1+WiFi(2.4G)TEWA-800G配置桥接模式
Ubuntu挂载Apfs文件系统磁盘(OSX分区) - 小家猫 - 博客园
unRAID虚拟机添加声卡_unraid虚拟机安装虚拟声卡-CSDN博客
docker 限制网速
jellyfin 代理
使用Cloudflare Worker代理Telegram Bot Api(2023.05)
Cloudflare + Backblaze私有桶 实现免费的图床 | king
MacOS 14 Sonoma 英特无线网卡无法检测更新及在线升级失败解决方案 - 黑果之家
惠普HP t430安装openwrt,配置旁路由,
小雅Alist定时清理缓存 - xyztank - 博客园
Unraid中安装小雅Alist、Emby全家桶
(图文)jellyfin如何重置账户密码的详细教程
【2023-10-24】【R4S】 (RK3399) jellyfin 硬解4K H.265 视频-OPENWRT专版-恩山无线论坛
从已运行容器获取docker run参数
armbian 一键换源
dts — rk3399.dtsi
samba搭建记录
docker限制容器下载速度
好好学Docker:Docker容器网络限速
记录一次Unraid开心版升级 | 一个无人问津的小站
manjaro软件包管理器pacman介绍,并于centOS7yum类比
当Mac文件被永久锁定后,如:hosts文件无法修改被锁定且无法解锁
switch《塞尔达传说王国之泪》1.21含60帧多功能mod
命令提示符、Powershell、CMD闪退问题的解决
批量更新 OpenWRT 软件包
ROS7.8 L6授权 MikroTik_RouterOS7.8 _UEFI_ESXI+PVE+unRaid_i225_i226
联通吉比特TEWA-800G超级管理员密码获取
systemd时代的/etc/fstab - Systemd系列文章
armbian插入磁盘自动挂载及docker安装
开发板linux自动挂载U盘和SD卡/Automount usb disk and sdcard on the linux
udev自动挂载和命名
使用Cloudflare Worker代理Telegram Bot Api
RK3588在Armbian上运行PIKVM
穷人的IP-KVM远程访问
禁用Intel ME
sunshine 基地版串流食用指南
Docker版本的Transmission更换webui为 transmission-web-control
WOL 网络唤醒避坑指南:常见问题的分析与内容补充_软件应用_什么值得买
Win11 设置 Syncthing 开机自启动
imlala/ubuntu-xfce-vnc-novnc
NAS用户必备!170 多个好玩的,好用的docker容器_NAS存储_什么值得买
通过Redroid搭建自己的云手机
基于 Telegraph 的免费图床 - 摸鱼派 - 白与画科技
Webmin--一个用于Linux基于Web的系统管理工具
CMWTAT_Digital_Edition/README.zh.md at master · TGSAN/CMWTAT_Digital_Edition
❤️🔥电视盒子助手Docker版使用摘要-悟空的日常
Update LineageOS on Xiaomi Mi 6
一加七Pro刷lineageos21(kernelsu+gapps)
Install LineageOS on Xiaomi Mi 6
Android刷機常見的GApps套件 (Google服務框架) 比較,OpenGApps、NikGApps、MindTheGApps、microG · Ivon的部落格
r08 armbian固件喇叭播放 - LaJiLao.Top
Docker 命令大全 | 菜鸟教程
本文档使用 MrDoc 发布
-
+
首页
Linux系统服务神器:systemctl的配置与使用 - 掘金
「这是我参与2022首次更文挑战的第15天,活动详情查看:[2022首次更文挑战](https://juejin.cn/post/7052884569032392740)」。 ## 前言 以前使用Ubuntu和CentOS,一般使用`SysV init`(就是以前使用的`service`)进行进程的开机自启和进程守护。 但是,现在更多地使用`systemd`来实现进程的管理。 ## Systemd Systemd(系统管理守护进程),最开始以`GNU GPL协议`授权开发,现在已转为使用`GNU LGPL`协议。字母`d`是`daemon`的缩写 它取替并兼容传统的`SysV init`。事实上,CentOS和Debian,现在默认都是使用Systemd: - CentOS 7开始预设并使用Systemd - Ubuntu 15.04开始并预设使用Systemd 使用Systemd的优点: - 按需启动进程,减少系统资源消耗 - 并行启动进程,提高系统启动速度 查看`systemd`和`systemctl`程序相关的目录: ```bash whereis systemd whereis systemctl ```  事实上,它还是Linux的1号进程: ```bash ps -p 1 ```  可以想到,优先级有多高。 ## Unit Systemd引入了一个核心配置:`Unit`(单元配置)。事实上,Systemd管理的每个进程,都是一个`Unit`。相当于任务块。一个有12种模式: - Service unit:系统服务 - Target unit:多个Unit构成的一个组 - Device Unit:硬件设备 - Mount Unit:文件系统的挂载点 - Automount Unit:自动挂载点 - Path Unit:文件或路径 - Scope Unit:不是由 Systemd 启动的外部进程 - Slice Unit:进程组 - Snapshot Unit:Systemd 快照,可以切回某个快照 - Socket Unit:进程间通信的 socket - Swap Unit:swap 文件 - Timer Unit:定时器 ## Systemctl 是不是有小伙伴问,标题是Systemctl,但是到目前为止说的都是Systemd?其实,`systemctl`是 Systemd 的主命令,用于操作Systemd。 接下来,我们就来试试吧。 ## 创建配置文件 如果我们要创建一个`Unit`服务,我们应该如何创建配置文件呢? 我们自己配置`Unit`服务(后续使用Systemctl进行启动和管理),可以配置到: - `/usr/lib/systemd/system/`:推荐地址。 - `/run/systemd/system/`:系统执行过程中所产生的服务脚本,这些脚本的优先级比上面的高。 - `/etc/systemd/system/`:管理员根据主机系统的需求所建立的执行脚本,优先级比上面的高。 虽然,我推荐配置到`/usr/lib/systemd/system/`,但是还是要更加实际开发过程中遇到的情况做出改变嗷:  比如,我编译安装了Nginx,所以我这里创建一个: ```bash touch /usr/lib/systemd/system/nginx.service ```  之后,我们要写入。 ## 编写配置文件 使用`vim`进行配置文件的写入(其实刚刚不用`touch`创建也可以~): ```bash vim /usr/lib/systemd/system/nginx.service ``` 新增: ```xml [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target ```  这些项具体什么意思呢? 这里给大家一些解释: ```markdown - Unit - Description,服务的描述 - Documentation,文档介绍 - After,该服务要在什么服务启动之后启动,比如Mysql需要在network和syslog启动之后再启动 - Install - WantedBy,值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中 - RequiredBy,它的值是一个或多个Target,当前Unit激活(enable)时,符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中 - Alias,当前Unit可用于启动的别名 - Also,当前Unit激活(enable)时,会被同时激活的其他Unit - Service - Type,定义启动时的进程行为。它有以下几种值。 - Type=simple,默认值,执行ExecStart指定的命令,启动主进程 - Type=forking,以 fork 方式从父进程创建子进程,创建后父进程会立即退出 - Type=oneshot,一次性进程,Systemd 会等当前服务退出,再继续往下执行 - Type=dbus,当前服务通过D-Bus启动 - Type=notify,当前服务启动完毕,会通知Systemd,再继续往下执行 - Type=idle,若有其他任务执行完毕,当前服务才会运行 - ExecStart,启动当前服务的命令 - ExecStartPre,启动当前服务之前执行的命令 - ExecStartPost,启动当前服务之后执行的命令 - ExecReload,重启当前服务时执行的命令 - ExecStop,停止当前服务时执行的命令 - ExecStopPost,停止当其服务之后执行的命令 - RestartSec,自动重启当前服务间隔的秒数 - Restart,定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog - TimeoutSec,定义 Systemd 停止当前服务之前等待的秒数 - Environment,指定环境变量 ``` 有没有概念呢?这里再举例几个其他配置。 ## Demo1:Aria2交互 我们有时候会使用Aria2进行任务的下载。所以Linux服务器上会启动一个Aria2 RPC交互:  这样的Aria2交互,怎么设置个开机自启或者后台运行呢? 其实用`systemctl`也可以,创建配置文件的方法已经在上文提及,我们看看怎么写: ```bash [Unit] Description=Aria2 After=network.target [Service] User=root Type=simple ExecStart=/etc/aria2/aria2c --conf-path=/etc/aria2/aria2.conf [Install] WantedBy=multi-user.target ``` 其中: - `After`:在网络启动后运行。 - `Type`:使用`simple`,即使ExecStart启动不成功,Unit任务也会继续执行。 - `ExecStart`:Unit的主进程,相当于入口。 ## Demo2:PHP-FPM PHP-FPM也会使用Systemctl来写进程守护。话不多说: ```ini [Unit] Description=php-fpm After=network.target [Service] Type=forking ExecStart=/usr/local/php7/sbin/php-fpm PrivateTmp=true [Install] WantedBy=multi-user.target ``` 其中: - `Type`:使用`forking`,`ExecStart=` 进程将会在启动过程中使用 `fork()` 系统调用。 ## Demo3:NPM Start 当然,有些用户会用systemctl去守护NPM进程,这里也举例: ```bash [Unit] Description=NodeServer [Service] ExecStart=/usr/bin/node /root/myApplication/NodeServer/app.js Restart=always Environment=PATH=/usr/bin:/usr/local/bin:/usr/local/node/bin Environment=NODE_ENV=production WorkingDirectory=/root/myApplication/NodeServer/ [Install] WantedBy=multi-user.target ``` 现在,我们就来试试启动和维护。 ## 使用Systemctl ## 重载配置 我们编写了配置文件,需要让配置文件生效。很简单,只需要使用命令: ```bash systemctl daemon-reload ```  这样systemctl重新载入配置文件就好了。 ## 启动服务 我们使用systemctl启动服务也很简单,比如:: ```bash systemctl start nginx systemctl start aria2 ```  可以看到,Aria2没什么问题,但是Nginx启动失败了。我们可以按提示,查看详情:  这样就可以知道为什么错了,主要是我Nginx编译设置问题,我调整一下。  Nginx这种服务,设置了`ExecReload`,还可以使用relaod重载配置: ``` systemctl reload nginx ```  停止服务也很简单:`stop`: ```bash systemctl stop aria2 systemctl stop nginx ``` ## 查看状态 我们想看我们启动的单元状态也很简单,使用`status`命令即可: ```bash systemctl status aria2 systemctl status nginx ```  > 类似于看终端前台输出。 ## 开机自启 使用systemctl设置开机自启很简单: ```bash systemctl enable aria2 systemctl enable nginx ```  查看Unit单元是否设置了开机自启: ```bash systemctl is-enable aria2 ```  当然,取消开机自启就是: ```bash systemctl disable aria2 systemctl disable nginx ```  ## 其他 以上是systemctl的常用命令,这里讲一下不常用,但是也很实用的。 ## 查看Unit服务 如果你想查看所有Unit服务,用Systemctl可以这样: ```bash systemctl list-units ``` 当然,可以省略为: ``` systemctl ```  当然,你可以配合`grep`命令操作: ```bash systemctl | grep -E 'UNIT|aria2' ```  ## END 到此,就是本次Linux命令分享、分析的全部内容啦。systemctl还真是个神器。毕竟是1号进程,哈哈,够强劲。 > 下次分享什么内容呢?
bigood
2024年1月19日 14:39
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码