2.4.2 新时代的开机启动:Systemd
Systemd的特点是会并发地启动进程。在设定好一个启动对象后,Systemd会尝试解决这个启动对象的依赖关系,而不会启动无关的进程。Systemd的配置文件在/etc/systemd/system下。需要注意的是,Systemd使用的是systemctl命令,比如:
$ sudo systemctl restart ssh
会重启ssh服务。出于兼容性的考虑,Systemd没有废弃service命令,比如:
$ sudo service apache2 reload
还是可以正常工作的。
在/etc/systemd/system/multi-user.target.wants文件夹下你会发现很多像cron.service这样的文件。通过ls命令检查,你会发现这些链接指向/lib/systemd/system文件夹下的同名文件,简单来说,它们处理了文件之间的依赖关系。接下来我们会介绍crontab:
$ sudo systemctl enable postgresql.service
这条指令创建了一个链接,然后postgreSQL会在系统启动时运行。
$ sudo systemctl daemon-reload
这条指令会使这些改变对systemd立即生效。
虽然运行等级在systemd模式下已经没有什么作用了,但是你还可以通过who-r指令来查看运行等级。
出于兼容性考虑,Systemd系统保留了init.d等脚本文件。
Systemd是一个复杂的系统,包括systemd.unit到systemd.slice等组件,这些组件都有自己的帮助页面,如图2-13所示。
图2-13
Systemd能够自动处理文件之间的链接关系,但有时你可能需要手动管理链接关系,这时就需要ln命令了。
ln命令能够创建一个文件的链接,然后就可以让一个文件出现在系统的两个不同位置了:
$ sudo ln -s /usr/share/doc/python-numpy/THANKS.txt $ numpy-THANKS.txt
建立链接后,输入“ls –l”,你会发现这是一种特别的文件(一个指向实际存储的文件的链接)。编辑numpy-THANKS.txt文件,然后你会发现原本的THANKS.txt也被更改了。
另外,这里的-s代表软链接。软链接的特点是被链接的文件甚至可以不存在,特别适配可插拔的设备。
这种链接被称为符号链接,这是因为它链接到的是文件的文件名,而不是文件实际的数据。
$ sudo ln /etc/bluetooth/main.conf mybluetooth.conf
以上命令生成了一个硬链接,相当于一个文件现在在不同的两个位置有了两个不同的名字,但这并不意味着这两个是同一个文件。创建一个硬链接会类似于复制生成了一个新的文件,对原文件的修改不会对硬链接文件产生影响。