当前位置: 首页 > 科技观察

Debian上如何使用systemd管理系统?

时间:2023-03-15 08:56:20 科技观察

【精选翻译】用不了多久,几乎没有Linux用户能够逃脱InitWars日益增长的控制,除非他们手动选择退出。如今,Systemd引起的技术、情感和社会问题比任何其他软件都要多。这主要在激烈的讨论中逐渐表现出来,也称为“InitWars”:Debian开发人员之间已经发生了几个月。尽管Debian技术委员会最终决定将systemd包含在Debian8“Jessie”中,但有人试图取代GeneralResolution做出的决定,甚至有人声称这对偏爱systemd的开发者的健康不利。这只是表明systemd严重阻碍了Linux系统的处理方式:自Unix时代以来,它在很大程度上是强加给我们的。像“一个工具适合任务”这样的理论已经被新的理论所取代。除了将sysvinit替换为init系统之外,systemd还深入研究了系统管理。现在,由于包systemd-sysv提供的兼容层,您习惯的许多命令将继续工作。一旦systemd214被上传到Debian,它计划在稳定分支中与Debian8“Jessie”一起发布。在此基础上,用户需要充分利用systemd自带的管理服务、进程、切换运行级别、查询日志系统等新命令。解决方法是在.bashrc中设置命令别名。那么,让我们来看看systemd将如何改变你我管理计算机的方式,以及相对的优缺点。在切换到systemd之前,保存旧的sysvinit是一个很好的安全做法,这样万一systemd失败,它仍然会启动。只要不安装systemd-sysv,旧的sysvinit就可以工作,只需要运行这条命令,很容易得到sysvinit:#cp-av/sbin/init/sbin/init.sysvinit就这样准备好了,以防万一紧急情况,只需将init=/sbin/init.sysvinit附加到内核启动时间参数的末尾即可。systemctlsystemctl的基本用法是取代原来的“/etc/init.d/foostart/stop”命令,但它的功能更多,可以参考参考手册页。一些基本用法如下:?systemctl-列出所有加载的单元及其状态(单元是任务/服务的术语)?systemctllist-units-列出所有单元?systemctlstart[NAME...]-start(activate)一个或多个单元systemctlstop[NAME...]-停止(停用)一个或多个单元systemctldisable[NAME...]-禁用一个或多个单元文件systemctllist-unit-files–显示所有安装的单元文件及其状态systemctl--failed–显示哪些单元在引导期间失败typesmaybe:service,mountpoint,device,socketSocketsandstarttargetssystemctlenabledebug-shell.service-在TTY9上启动rootshell进行调试,它可以由用户使用systemadm命令启动。切换运行级别、重启和关闭也由systemctl处理:systemctlisolategraphical.target–切换到运行级别5,其中X服务器正在运行systemctlisolatemulti-user.target–切换到运行级别3和TTY,没有X图形界面?systemctlreboot-关闭并重新启动系统?systemctlpoweroff-关闭系统除了用于切换运行级别的命令外,所有这些命令都可以由普通用户执行。journalctlsystemd的基本用法不仅可以比原始init系统更快地启动机器,而且可以更快地启动日志功能,包括来自内核初始化阶段、初始ramdisks、早期启动逻辑和主系统运行时的消息。因此,您需要使用网络摄像头提供内核恐慌或其他故障系统的输出以进行调试的日子基本上已经一去不复返了。就systemd而言,日志收集在系统日志(journal)中,它位于/var/log/。为了能够充分利用syslog,我们需要先设置syslog,因为Debian之前没有为您设置它:#addgroup--systemsystemd-journal#mkdir-p/var/log/journal#chownroot:systemd-journal/var/log/journal#gpasswd-a$usersystemd-journal这会设置系统日志,以便您可以作为普通用户查询它。使用journalctl查询系统日志比syslog的工作方式有一些优势:journalctl--all-显示系统及其所有用户的完整日志journalctl-f-显示系统日志的实时视图(相当于“tail-f/var/log/messages")journalctl-b-显示上次启动后的日志journalctl-k-b-1-显示上次启动前的所有内核日志(-b-1)journalctl-b-perr-显示上次启动后的日志boot,limitedtopriority“ERROR”journalctl--since=yesterday–因为Linux用户通常不经常重启,这比-bjournalctl-ucron.service--since='2014-07-0607:00'--until='2014-07-0608:23'–显示指定时间段的cron日志journalctl-p2--since=today–显示Priority2日志,其中包括emerg(***的紧急状态),alert(紧急状态)和crit(重要信息);与系统日志优先级emerg(0)、alert(1)、crit(2)、err(3)、warning(4)、notice(5)、info(6)和debug(7)完全一样。?journalctl>yourlog.log-将二进制格式的系统日志作为文本复制到当前目录系统日志可以与系统日志一起使用。另一方面,一旦您对syslog的工作方式感到满意,就可以清理任何syslog包,例如rsyslog或syslog-ng。对于非常详细的输出,将“systemd.log_level=debug”添加到内核启动时间参数列表的末尾,然后运行此命令:#journalctl-alb日志级别也可以在/etc/systemd/system.conf中编辑使用systemd分析启动过程Systemd允许您高效地分析和优化启动过程:计时?systemd-analyzecritical-chain-打印时间关键单元链的树结构?systemd-analyzedot|dot-Tsvg>systemd.svg-列出引导过程的矢量图(需要graphviz包)?systemd-analyzeplot>bootplot.svg-生成引导过程的图形时间图。对于一个历史较短但开发量很大的项目,systemd的文档写得相当好。首先是LennartPoettering的0pointer系列:http://0pointer.de/blog/projects/systemd.html。该系列技术性很强,相当冗长和详细,包含大量信息。另一个很好的来源是与发行版无关的Freedesktop信息页面:http://www.freedesktop.org/wiki/Software/systemd/,其中列出了最多的systemd资源链接、特定于发行版的页面、软件缺陷跟踪器(bugtracker)和文档。一目了然:#mansystemd.index粗略列出了所有systemd参考手册页。不同发行版的systemd命令结构基本相同,区别主要在封装上。英文:http://xmodulo.com/2014/07/use-systemd-system-administration-debian.html