树莓派创客:手把手教你玩转人工智能
上QQ阅读APP看书,第一时间看更新

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

以上命令生成了一个硬链接,相当于一个文件现在在不同的两个位置有了两个不同的名字,但这并不意味着这两个是同一个文件。创建一个硬链接会类似于复制生成了一个新的文件,对原文件的修改不会对硬链接文件产生影响。