最近更新
- 6s现在的用户体验如何?(探索6s现在的性能、功能及用户反馈)
- 如何在MySQL中存储emoji?
- 如何在Go语言中使用Redis连接池
- RedisSyncer同步引擎的设计与实现
- 蓝魅族手机评测(揭秘蓝魅族手机的各项特点与性能)
- MySQL断电恢复的一点简单分析
- MySQL令人头疼的Aborted告警案例分析
- 你不可不看的Oracle RAC日常基本维护命令
- “一个软件只做一件事情”的哲学思想已经被这个新来者彻底颠覆。除了取代了 sysvinit 成为新的系统初始化工具外,systemd 还是一个系统管理工具。目前为止,由于 systemd-sysv 这个软件包提供的兼容性,那些我们使用惯了的工具还能继续工作。但是当 Debian 将 systemd 升级到214版本后,这种兼容性就不复存在了。升级措施预计会在 Debian 8 Jessie 的稳定分支上进行。从此以后用户必须使用新的命令来管理系统、执行任务、变换运行级别、查询系统日志等等。不过这里有一个应对方案,那就是在 .bashrc 文件里面添加一些别名。现在就让我们来看看 systemd 是怎么改变你管理系统的习惯的。在使用 systemd 之前,你得先把 sysvinit 保存起来,以便在 systemd 出错的时候还能用 sysvinit 启动系统。这种方法只有在没安装 systemd-sysv 的情况下才能生效,具体操作方法如下:复制代码代码如下:# cp -av /sbin/init /sbin/init.sysvinit 在紧急情况下,可以把下面的文本:复制代码代码如下:init=/sbin/init.sysvinit添加到内核启动参数项那里。systemctl 的基本用法systemctl 的功能是替代“/etc/init.d/foo start/stop”这类命令,另外,其实它还能做其他的事情,这点你可以参考 man 文档。一些基本用法: systemctl - 列出所有单元(UNIT)以及它们的状态(这里的 UNIT 指的就是系统上的 job 和 service) systemctl list-units - 列出所有 UNIT systemctl start [NAME...] - 启动一项或多项 UNIT systemctl stop [NAME...] - 停止一项或多项 UNIT systemctl disable [NAME...] - 将 UNIT 设置为开机不启动 systemctl list-unit-files - 列出所有已安装的 UNIT,以及它们的状态 systemctl --failed - 列出开机启动失败的 UNIT systemctl --type=mount - 列出某种类型的 UNIT,类型包含:service, mount, device, socket, target systemctl enable debug-shell.service - 将一个 shell 脚本设置为开机启动,用于调试为了更方便处理这些 UNIT,你可以使用 systemd-ui 软件包,你只要输入 systemadm 命令就可以使用这个软件。你同样可以使用 systemctl 实现转换运行级别、重启系统和关闭系统的功能: systemctl isolate graphical.target - 切换到运行级别5,就是有桌面的运行级别 systemctl isolate multi-user.target - 切换到运行级别3,没有桌面的运行级别 systemctl reboot - 重启系统 systemctl poweroff - 关机所有命令,包括切换到其他运行级别的命令,都可以在普通用户的权限下执行。journalctl 的基本用法systemd 不仅提供了比 sysvinit 更快的启动速度,还让日志系统在更早的时候启动起来,可以记录内核初始化阶段、内存初始化阶段、前期启动步骤以及主要的系统执行过程的日志。所以,以前那种需要通过对显示屏拍照或者暂停系统来调试程序的日子已经一去不复返啦。systemd 的日志文件都被放在 /var/log 目录。假如你想使用它的日志功能,需要执行一些命令,因为 Debian 没有打开日志功能。命令如下:复制代码代码如下:# addgroup --system systemd-journal # mkdir -p /var/log/journal # chown root:systemd-journal /var/log/journal # gpasswd -a $user systemd-journal 通过上面的设置,你就可以以普通用户权限使用 journal 软件查看日志。使用 journalctl 查询日志可以获得一些比 syslog 软件更方便的玩法: journalctl --all - 显示系统上所有日志,以及它的用户 journalctl -f - 监视系统日志的变化(类似 tail -f /var/log/messages 的效果) journalctl -b - 显示系统启动以后的日志 journalctl -k -b -1 - 显示上一次(-b -1)系统启动前产生的内核日志 journalctl -b -p err - 显示系统启动后产生的“ERROR”日志 journalctl --since=yesterday - 当系统不会经常重启的时候,这条命令能提供比 -b 更短的日志记录 journalctl -u cron.service --since=2014-07-06 07:00 --until=2014-07-06 08:23 - 显示 cron 服务在某个时间段内打印出来的日志 journalctl -p 2 --since=today - 显示优先级别为2以内的日志,包含 emerg、alert、crit三个级别。所有日志级别有: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7) journalctl >yourlog.log - 将二进制日志文件复制成文本文件并保存到当前目录Journal 和 syslog 可以很好的共存。而另一方面,一旦你习惯了操作 journal,你也可以卸载掉所有 syslog 的软件,比如 rsyslog 或 syslog-ng。假如想要得到更详细的日志信息,你可以在内核启动参数上添加“systemd.log_level=debug”,然后运行下面的命令:复制代码代码如下:# journalctl -alb 你也可以编辑 /etc/systemd/system.conf 文件来修改日志级别。利用 systemd 分析系统启动过程systemd 可以让你能更有效地分析和优化你的系统启动过程: systemd-analyze - 显示本次启动系统过程中用户态和内核态所花的时间 systemd-analyze blame - 显示每个启动项所花费的时间明细 systemd-analyze critical-chain - 按时间顺序打印 UNIT 树 systemd-analyze dot | dot -Tsvg >systemd.svg - 为开机启动过程生成向量图(需要安装 graphviz 软件包) systemd-analyze plot >bootplot.svg - 产生开机启动过程的时间图表systemd 虽然是个年轻的项目,但已有大量文档。首先要介绍给你的是Lennart Poettering 的 0pointer 系列。这个系列非常详细,非常有技术含量。另外一个是免费桌面信息文档,它包含了最详细的关于 systemd 的链接:发行版特性文件、bug 跟踪系统和说明文档。你可以使用下面的命令来查询 systemd 都提供了哪些文档:复制代码代码如下:# man systemd.index 不同发行版之间的 systemd 提供的命令基本一样,最大的不同之处就是打包方式。
- 码农和技术大牛的区别就在于是否知道MySQL的这五个私有语句
- 七门免费的线上网络安全大师课
- 关于数据库连接池的极简教程
- 拉黑卖家(探究拉黑卖家的利与弊,以及对消费者的影响)
- 性能优化 | MySQL常见SQL错误用法
- 侠盗猎车手游戏源码和视频泄露
- MySQL DDL操作--------视图更优实战
- 以灵越游匣Speed(重新定义游戏速度,快人一步体验游戏的乐趣)
- 2018年,让你的数据库变更快的十个建议
- 电商库存系统的防超卖和高并发扣减方案
- 10分钟让你明白MySQL是如何利用索引的
点击排行
- 解决W7电脑IP地址错误的方法(如何修复W7电脑IP地址错误问题及常见解决方案)
- 零信任如何提高移动设备的安全性?
- MD5现在还有人用么?
- MySQL并发引起的死锁问题
- 因为把Ubuntu从13.04升级到13.10后,鼠标出现了问题,一打开网页就不停的闪,而且好多东西都不一样了,又不好用,所以选择重装系统,重装的时候偏偏又重新分了区,然后装完了,一重启,悲剧了,进入修复grub rescue模式下了,一时间就不知道怎么办好了,好在还有个平板可以上网,马上上网搜。很快就搜到不少,点开第一个,“用U盘启动进入Windows系统重写mbr”?那我的Ubuntu不就没了!!!直接PASS!!!“直接在grub rescue”下修复,嗯,这个好。马上按给的方法试,我去,完全不一样好不好!完全没有变化!!再接着搜,嗯,这篇好像靠谱多了,还写了出现这种问题对应的情况,不错,有重新分区造成的,这个看起来是了。马上照着做。1、输入set查看当前的设置(原来这个是查看当前设置的,先前搜到的都不说清楚)2、输入set root=(hd0,msdos11),难怪刚才我的没有变化,选择前搜到的根本没有set,直接就root=(hd0,msdos11)了。(msdos11是我Ubuntu安装的位置,每个人不同的,可以用ls (hd0,x)/root/grub 查看安装到哪个分区了,运行命令后出现很多文件的就是了)3、输入insmod /grub/normal.mod,我靠,没有这个文件,什么情况!!!难道我的不是Ubuntu!!这不科学!!!冷静,要冷静!检查Ubuntu安装在哪个盘时还有几个文件夹,会不会是文件的路径不一样,嗯,查看一个其它文件路径看看,输入ls (hd0,msdos11)/root/grub/i386-pc,一个回国,出来一大串的文件名,大部分是.mod和.img的,应该就是这个了,把命令换成insmod (hd0,msdos11)/root/grub/i386-pc/normal.mod,成功!!!!4、输入normal,回车的,熟悉的启动菜单出来了。不过还没有完。5,进行Ubuntu,打开终端,输入sudo update-grub,更新一下引导文件。6、输入sudo grub-install /dev/sda,等待几秒,我靠,失败,还没有原因!!算了,重启试试。等待中。。。我去,又是grub rescue!!!重新来过,再次进入Ubuntu,把网页再往下拉,还有解决的方法,不过刚才因为是要用live cd启动就没管,再试这个方法好了!(一般情况到这里应该就修复完成了,不过我的情况不一样,我是在重装时又重新分了区,而且还重新指定了引导文件存在的位置导致的,需要再用到下面的方法才行。)7、输入sudo mount /dev/sda11 /mnt,把安装的盘挂载到/mnt上8、输入sudo grub-install --boot-directory=/mnt/boot/dev/sda,我靠,出来这一串东西是什么,我没输入错误啊,怎么不是运行成功!再试!还是这样!!!!重复试了几次后,算了,重启吧,奇迹般的启动菜单出来了!!原来已经执行成功了吗?!!好了!这就是过程了,我的小心脏啊!!!(这是没有把/boot单独分出来的方法,把/boot单独分出来的话就把命令中的“/boot”去掉就好了)
- 从MySQL和MongoDB的对比,看SQL与NoSQL的较量
- 关于Redis的数据清理
- Hadoop伪分布式搭建操作步骤指南
- iPhone4S5.0.1系统的优势与功能(探索iPhone4S5.0.1系统的卓越性能与创新特点)
- 基于 Go 语言开发的监控系统

