systemd 文件在下面两个文件夹中
-
软件安装的 units
/usr/lib/systemd/system/
或者/lib/systemd/system/
-
用户安装的 units
/etc/systemd/system/
可以使用man systemd.unit
, man systemd.service
等命令来查看一些信息。
一个常见的systemd unit可能是以下一种类型: service.service, socket.socket, device.device, mount.mount, automount.automount, swap.swap, target.target, path.path, timer.timer, slice.slice, scope.scope
下面我将在自己电脑上新建一个叫ylstart.service的服务
acytoo@ladder:~$ su -
root@ladder:~# cd /etc/systemd/system
root@ladder:/etc/systemd/system# emacs ylstart.service
在ylstart.service
中写入以下信息
[Unit]
Description=A service
Requires=display-manager.service
After=display-manager.service
[Service]
ExecStart=/home/acytoo/.myservices/some.sh
Type=simple
[Install]
WantedBy=multi-user.target
写完后保存,退出,接下来在用户的目录下创建.myservices
文件夹以及服务主体some.sh
acytoo@ladder:~$ mkdir -p .myservices && cd .myservices
acytoo@ladder:~/.myservices$ emacs some.sh
在some.sh
中加入你想执行的程序,比如我想在开机时更换伪装的网卡 MAC 地址,并且使机械硬盘休眠省电减小噪声。(我的操作系统是基于Debian testing的Kali linux,不同版本不同用法)
#!/bin/bash
echo "Hello"
ifconfig wlan0 down
macchanger -r wlan0
ifconfig wlan0 up
systemctl restart network-manager
echo "Mac address changed"
sleep 5s
hdparm -y /dev/sda
echo "/dev/sda entered standby mode"
保存,退出,然后给我们刚刚创建的shell执行权限。
acytoo@ladder:~/.myservices$ chmod +x ./some.sh
然后,可以测试我们刚刚创建的服务,比如下面这条命令让我们刚刚写的some.sh
开机加载桌面环境后自启动。
root@ladder:~# systemctl enable ylstart.service
#参考链接
https://wiki.archlinux.org/index.php/systemd
https://wiki.archlinux.org/index.php/systemd#Writing_unit_files