标签 开机 下的文章

当你打开系统电源时,你会等待制造商的徽标出现,屏幕上可能会显示一些消息(以非安全模式启动),然后是 Grub 屏幕、操作系统加载屏幕以及最后的登录屏。

你检查过这花费了多长时间么?也许没有。除非你真的需要知道,否则你不会在意开机时间。

但是如果你很想知道你的 Linux 系统需要很长时间才能启动完成呢?使用秒表是一种方法,但在 Linux 中,你有一种更好、更轻松地了解系统启动时间的方法。

在 Linux 中使用 systemd-analyze 检查启动时间

无论你是否喜欢,systemd 运行在大多数流行的 Linux 发行版中。systemd 有许多管理 Linux 系统的工具。其中一个就是 systemd-analyze

systemd-analyze 命令为你提供最近一次启动时运行的服务数量以及消耗时间的详细信息。

如果在终端中运行以下命令:

systemd-analyze

你将获得总启动时间以及固件、引导加载程序、内核和用户空间所消耗的时间:

Startup finished in 7.275s (firmware) + 13.136s (loader) + 2.803s (kernel) + 12.488s (userspace) = 35.704s

graphical.target reached after 12.408s in userspace

正如你在上面的输出中所看到的,我的系统花了大约 35 秒才进入可以输入密码的页面。我正在使用戴尔 XPS Ubuntu。它使用 SSD 存储,尽管如此,它还需要很长时间才能启动。

不是那么令人印象深刻,是吗?为什么不共享你们系统的启动时间?我们来比较吧。

你可以使用以下命令将启动时间进一步细分为每个单元:

systemd-analyze blame

这将生成大量输出,所有服务按所用时间的降序列出。

7.347s plymouth-quit-wait.service
6.198s NetworkManager-wait-online.service
3.602s plymouth-start.service
3.271s plymouth-read-write.service
2.120s apparmor.service
1.503s [email protected]
1.213s motd-news.service
 908ms snapd.service
 861ms keyboard-setup.service
 739ms fwupd.service
 702ms bolt.service
 672ms dev-nvme0n1p3.device
 608ms [email protected]:intel_backlight.service
 539ms snap-core-7270.mount
 504ms snap-midori-451.mount
 463ms snap-screencloud-1.mount
 446ms snapd.seeded.service
 440ms snap-gtk\x2dcommon\x2dthemes-1313.mount
 420ms snap-core18-1066.mount
 416ms snap-scrcpy-133.mount
 412ms snap-gnome\x2dcharacters-296.mount

额外提示:改善启动时间

如果查看此输出,你可以看到网络管理器和 plymouth 都消耗了大量的启动时间。

Plymouth 负责你在 Ubuntu 和其他发行版中在登录页面出现之前的引导页面。网络管理器负责互联网连接,可以关闭它来加快启动时间。不要担心,在你登录后,你可以正常使用 wifi。

sudo systemctl disable NetworkManager-wait-online.service

如果要还原更改,可以使用以下命令:

sudo systemctl enable NetworkManager-wait-online.service

请不要在不知道用途的情况下自行禁用各种服务。这可能会产生危险的后果。

现在你知道了如何检查 Linux 系统的启动时间,为什么不在评论栏分享你的系统的启动时间?


via: https://itsfoss.com/check-boot-time-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

timekeeper

了解如何通过配置 Linux 计算机来根据时间自动唤醒和关闭。

不要成为一个电能浪费者。如果你的电脑不需要开机就请把它们关机。出于方便和计算机宅的考虑,你可以通过配置你的 Linux 计算机实现自动唤醒和关闭。

宝贵的系统运行时间

有时候有些电脑需要一直处在开机状态,在不超过电脑运行时间的限制下这种情况是被允许的。有些人为他们的计算机可以长时间的正常运行而感到自豪,且现在我们有内核热补丁能够实现只有在硬件发生故障时才需要机器关机。我认为比较实际可行的是,像减少移动部件磨损一样节省电能,且在不需要机器运行的情况下将其关机。比如,你可以在规定的时间内唤醒备份服务器,执行备份,然后关闭它直到它要进行下一次备份。或者,你可以设置你的互联网网关只在特定的时间运行。任何不需要一直运行的东西都可以将其配置成在其需要工作的时候打开,待其完成工作后将其关闭。

系统休眠

对于不需要一直运行的电脑,使用 root 的 cron 定时任务(即 /etc/crontab)可以可靠地关闭电脑。这个例子创建一个 root 定时任务实现每天晚上 11 点 15 分定时关机。

# crontab -e -u root
# m h  dom mon dow   command
15 23 * * * /sbin/shutdown -h now

以下示例仅在周一至周五运行:

15 23 * * 1-5 /sbin/shutdown -h now

您可以为不同的日期和时间创建多个 cron 作业。 通过命令 man 5 crontab 可以了解所有时间和日期的字段。

一个快速、容易的方式是,使用 /etc/crontab 文件。但这样你必须指定用户:

15 23 * * 1-5 root shutdown -h now

自动唤醒

实现自动唤醒是一件很酷的事情;我大多数 SUSE (SUSE Linux)的同事都在纽伦堡,因此,因此为了跟同事能有几小时一起工作的时间,我不得不需要在凌晨五点起床。我的计算机早上 5 点半自动开始工作,而我只需要将自己和咖啡拖到我的桌子上就可以开始工作了。按下电源按钮看起来好像并不是什么大事,但是在每天的那个时候每件小事都会变得很大。

唤醒 Linux 计算机可能不如关闭它可靠,因此你可能需要尝试不同的办法。你可以使用远程唤醒(Wake-On-LAN)、RTC 唤醒或者个人电脑的 BIOS 设置预定的唤醒这些方式。这些方式可行的原因是,当你关闭电脑时,这并不是真正关闭了计算机;此时计算机处在极低功耗状态且还可以接受和响应信号。只有在你拔掉电源开关时其才彻底关闭。

BIOS 唤醒

BIOS 唤醒是最可靠的。我的系统主板 BIOS 有一个易于使用的唤醒调度程序 (图 1)。对你来说也是一样的容易。

wakeup

图 1:我的系统 BIOS 有个易用的唤醒定时器。

主机远程唤醒(Wake-On-LAN)

远程唤醒是仅次于 BIOS 唤醒的又一种可靠的唤醒方法。这需要你从第二台计算机发送信号到所要打开的计算机。可以使用 Arduino 或 树莓派 Raspberry Pi 发送给基于 Linux 的路由器或者任何 Linux 计算机的唤醒信号。首先,查看系统主板 BIOS 是否支持 Wake-On-LAN ,要是支持的话,必须先启动它,因为它被默认为禁用。

然后,需要一个支持 Wake-On-LAN 的网卡;无线网卡并不支持。你需要运行 ethtool 命令查看网卡是否支持 Wake-On-LAN :

# ethtool eth0 | grep -i wake-on
        Supports Wake-on: pumbg
        Wake-on: g

这条命令输出的 “Supports Wake-on” 字段会告诉你你的网卡现在开启了哪些功能:    

  • d -- 禁用
  • p -- 物理活动唤醒
  • u -- 单播消息唤醒
  • m -- 多播(组播)消息唤醒
  • b -- 广播消息唤醒
  • a -- ARP 唤醒
  • g -- 特定数据包 magic packet 唤醒
  • s -- 设有密码的 特定数据包 magic packet 唤醒

ethtool 命令的 man 手册并没说清楚 p 选项的作用;这表明任何信号都会导致唤醒。然而,在我的测试中它并没有这么做。想要实现远程唤醒主机,必须支持的功能是 g —— 特定数据包 magic packet 唤醒,而且下面的“Wake-on” 行显示这个功能已经在启用了。如果它没有被启用,你可以通过 ethtool 命令来启用它。

# ethtool -s eth0 wol g

这条命令可能会在重启后失效,所以为了确保万无一失,你可以创建个 root 用户的定时任务(cron)在每次重启的时候来执行这条命令。

@reboot /usr/bin/ethtool -s eth0 wol g

另一个选择是最近的 网络管理器 Network Manager 版本有一个很好的小复选框来启用 Wake-On-LAN(图 2)。

wakeonlan

图 2:启用 Wake on LAN

这里有一个可以用于设置密码的地方,但是如果你的网络接口不支持 安全开机 Secure On 密码,它就不起作用。

现在你需要配置第二台计算机来发送唤醒信号。你并不需要 root 权限,所以你可以为你的普通用户创建 cron 任务。你需要用到的是想要唤醒的机器的网络接口和MAC地址信息。

30 08 * * * /usr/bin/wakeonlan D0:50:99:82:E7:2B 

RTC 唤醒

通过使用实时闹钟来唤醒计算机是最不可靠的方法。对于这个方法,可以参看 Wake Up Linux With an RTC Alarm Clock ;对于现在的大多数发行版来说这种方法已经有点过时了。

下周继续了解更多关于使用 RTC 唤醒的方法。

通过 Linux 基金会和 edX 可以学习更多关于 Linux 的免费 Linux 入门教程。

(题图:The Observatory at Delhi


via:https://www.linux.com/learn/intro-to-linux/2017/11/wake-and-shut-down-linux-automatically

作者:Carla Schroder 译者:HardworkFish 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你可以使用下面的工具来查看 Linux 或类 Unix 系统运行了多长时间:

  • uptime : 告诉你服务器运行了多长的时间。
  • lastt : 显示重启和关机时间。
  • tuptime : 报告系统的运行时间历史和运行时间统计,这是指重启之间的运行时间。和 uptime 命令类似,不过输出结果更有意思。

找出系统上次重启时间和日期

可以使用下面的命令来获取Linux操作系统的上次重启和关机时间及日期(在OSX/类Unix系统上也可以用):

### 显示系统重启和关机时间
who -b
last reboot
last shutdown
### 开机信息
uptime
cat /proc/uptime
awk '{ print "up " $1 /60 " minutes"}' /proc/uptime
w

样例输出:

Fig.01: Various Linux commands in action to find out the server uptime

图01:用于找出服务器开机时间的多个Linux命令

跟 tuptime 问打个招呼吧

tuptime 命令行工具可以报告基于 Linux 的系统上的下列信息:

  1. 系统启动次数统计
  2. 注册首次启动时间(也就是安装时间)
  3. 正常关机和意外关机统计
  4. 平均开机时间和故障停机时间
  5. 当前开机时间
  6. 首次启动以来的开机和故障停机率
  7. 累积系统开机时间、故障停机时间和合计
  8. 报告每次启动、开机时间、关机和故障停机时间

安装

输入下面的命令来克隆 git 仓库到 Linux 系统中

$ cd /tmp
$ git clone https://github.com/rfrail3/tuptime.git
$ ls
$ cd tuptime
$ ls

样例输出:

Fig.02: Cloning a git repo

图02:克隆git仓库

确保你安装了带有 sys,optparse,os,re,string,sqlite3,datetime,disutils 和 locale 模块的 Python v2.7。

你可以像下面这样来安装:

$ sudo tuptime-install.sh

或者,可以手工安装(基于 systemd 或非 systemd ):

$ sudo cp /tmp/tuptime/latest/cron.d/tuptime /etc/cron.d/tuptime

如果系统是systemd的,拷贝服务文件并启用:

$ sudo cp /tmp/tuptime/latest/systemd/tuptime.service /lib/systemd/system/
$ sudo systemctl enable tuptime.service

如果系统不是systemd的,拷贝初始化文件:

$ sudo cp /tmp/tuptime/latest/init.d/tuptime.init.d-debian7 /etc/init.d/tuptime
$ sudo update-rc.d tuptime defaults

运行

只需输入以下命令:

$ sudo tuptime

样例输出:

Fig.03: tuptime in action

图03:tuptime工作中

在一次更新内核后,我重启了系统,然后再次输入了同样的命令:

$ sudo tuptime
System startups:    2   since   03:52:16 PM 08/21/2015
System shutdowns:   1 ok   -   0 bad
Average uptime:     7 days, 16 hours, 48 minutes and 3 seconds
Average downtime:   2 hours, 30 minutes and 5 seconds
Current uptime:     5 minutes and 28 seconds   since   06:23:06 AM 09/06/2015
Uptime rate:        98.66 %
Downtime rate:      1.34 %
System uptime:      15 days, 9 hours, 36 minutes and 7 seconds
System downtime:    5 hours, 0 minutes and 11 seconds
System life:        15 days, 14 hours, 36 minutes and 18 seconds

你可以像下面这样修改日期和时间格式:

$ sudo tuptime -d '%H:%M:%S %m-%d-%Y'

样例输出:

System startups:    1   since   15:52:16 08-21-2015
System shutdowns:   0 ok   -   0 bad
Average uptime:     15 days, 9 hours, 21 minutes and 19 seconds
Average downtime:   0 seconds
Current uptime:     15 days, 9 hours, 21 minutes and 19 seconds   since   15:52:16 08-21-2015
Uptime rate:        100.0 %
Downtime rate:      0.0 %
System uptime:      15 days, 9 hours, 21 minutes and 19 seconds
System downtime:    0 seconds
System life:        15 days, 9 hours, 21 minutes and 19 seconds

计算每次启动、开机时间、关机和故障停机时间:

$ sudo tuptime -e

样例输出:

Startup:  1  at  03:52:16 PM 08/21/2015
Uptime:   15 days, 9 hours, 22 minutes and 33 seconds

System startups:    1   since   03:52:16 PM 08/21/2015
System shutdowns:   0 ok   -   0 bad
Average uptime:     15 days, 9 hours, 22 minutes and 33 seconds
Average downtime:   0 seconds
Current uptime:     15 days, 9 hours, 22 minutes and 33 seconds   since   03:52:16 PM 08/21/2015
Uptime rate:        100.0 %
Downtime rate:      0.0 %
System uptime:      15 days, 9 hours, 22 minutes and 33 seconds
System downtime:    0 seconds
System life:        15 days, 9 hours, 22 minutes and 33 seconds

via: http://www.cyberciti.biz/hardware/howto-see-historical-statistical-uptime-on-linux-server/

作者:Vivek Gite 译者:GOLinux 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Ubuntu 中管理开机启动应用

你曾经考虑过 在 Ubuntu 中管理开机启动应用 吗?如果在开机时,你的 Ubuntu 系统启动得非常缓慢,那么你就需要考虑这个问题了。

每当你开机进入一个操作系统,一系列的应用将会自动启动。这些应用被称为‘开机启动应用’ 或‘开机启动程序’。随着时间的推移,当你在系统中安装了足够多的应用时,你将发现有太多的‘开机启动应用’在开机时自动地启动了,它们吃掉了很多的系统资源,并将你的系统拖慢。这可能会让你感觉卡顿,我想这种情况并不是你想要的。

让 Ubuntu 变得更快的方法之一是对这些开机启动应用进行控制。 Ubuntu 为你提供了一个 GUI 工具来让你找到这些开机启动应用,然后完全禁止或延迟它们的启动,这样就可以不让每个应用在开机时同时运行。

在这篇文章中,我们将看到 在 Ubuntu 中,如何控制开机启动应用,如何让一个应用在开机时启动以及如何发现隐藏的开机启动应用。这里提供的指导对所有的 Ubuntu 版本均适用,例如 Ubuntu 12.04, Ubuntu 14.04 和 Ubuntu 15.04。

在 Ubuntu 中管理开机启动应用

默认情况下, Ubuntu 提供了一个Startup Applications工具来供你使用,你不必再进行安装。只需到 Unity 面板中就可以查找到该工具。

ubuntu 中的开机启动应用工具

点击它来启动。下面是我的Startup Applications的样子:

在 Ubuntu 中查看开机启动程序

在 Ubuntu 中移除开机启动应用

现在由你来发现哪个程序对你用处不大,对我来说,是 Caribou 这个软件,它是一个屏幕键盘程序,在开机时它并没有什么用处,所以我想将它移除出开机启动程序的列表中。

你可以选择阻止某个程序在开机时启动,而在开机启动程序列表中保留该选项以便以后再进行激活。点击 关闭按钮来保留你的偏好设置。

在 Ubuntu 中移除开机启动程序

要将一个程序从开机启动程序列表中移除,选择对应的选项然后从窗口右边的面板中点击移除按钮来保留你的偏好设置。

在 Ubuntu 中将程序从开机启动列表中移除

需要提醒的是,这并不会将该程序卸载掉,只是让该程序不再在每次开机时自动启动。你可以对所有你不喜欢的程序做类似的处理。

让开机启动程序延迟启动

若你并不想在开机启动列表中移除掉程序,但同时又忧虑着系统性能的问题,那么你所需要做的是给程序添加一个延迟启动命令,这样所有的程序就不会在开机时同时启动。

选择一个程序然后点击 编辑 按钮。

编辑开机启动应用列表

这将展示出运行这个特定的程序所需的命令。

在开机启动列表的程序运行所需的命令

所有你需要做的就是在程序运行命令前添加一句 sleep XX; 。这样就为实际运行该命令来启动的对应程序添加了 XX 秒的延迟。例如,假如我想让 Variety 壁纸管理应用 延迟启动 2 分钟,我就需要像下面那样在命令前添加 sleep 120;

在 Ubuntu 中延迟开机启动的程序

保存并关闭设置。你将在下一次启动时看到效果。

增添一个程序到开机启动应用列表中

这对于新手来说需要一点技巧。我们知道,在 Linux 的底层都是一些命令,在上一节我们看到这些开机启动程序只是在每次开机时运行一些命令。假如你想在开机启动列表中添加一个新的程序,你需要知道运行该应用所需的命令。

第 1 步:如何查找运行一个程序所需的命令?

首先来到 Unity Dash 面板然后搜索 Main Menu:

Ubuntu 下的程序菜单

这将展示出在各种类别下你安装的所有程序。在 Ubuntu 的低版本中,你将看到一个相似的菜单,通过它来选择并运行应用。

Ubuntu 下的 main menu

在各种类别下找到你找寻的应用,然后点击 属性 按钮来查看运行该应用所需的命令。例如,我想在开机时运行 Transmission Torrent 客户端

在 Ubuntu 下查找运行程序所需的命令

这就会向我给出运行 Transmission 应用的命令:

在 Ubuntu 下查找运行某个程序所需的命令

接着,我将用相同的信息来将 Transmission 应用添加到开机启动列表中。

第 2 步: 添加一个程序到开机启动列表中

再次来到开机启动应用工具中并点击 添加 按钮。这将让你输入一个应用的名称,对应的命令和相关的描述。其中命令最为重要,你可以使用任何你想用的名称和描述。使用上一步得到的命令然后点击 添加 按钮。

在 Ubuntu 中添加一个开机启动程序

就这样,你将在下一次开机时看到这个程序会自动运行。这就是在 Ubuntu 中你能做的关于开机启动应用的所有事情。

到现在为止,我们已经讨论在开机时可见到的应用,但仍有更多的服务,守护进程和程序并不在开机启动应用工具中可见。下一节中,我们将看到如何在 Ubuntu 中查看这些隐藏的开机启动程序。

在 Ubuntu 中查看隐藏的开机启动程序

要查看在开机时哪些服务在运行,可以打开一个终端并使用下面的命令:

sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop

上面的命令是一个快速查找和替换命令,它将在所有自动启动的程序里的 NoDisplay=false 改为 NoDisplay=true ,一旦执行了这个命令后,再次打开开机启动应用工具,现在你应该可以看到更多的程序:

在 Ubuntu 中查看隐藏的开机启动程序

你可以像先前我们讨论的那样管理这些开机启动应用。我希望这篇教程可以帮助你在 Ubuntu 中控制开机启动程序。任何的问题或建议总是欢迎的。


via: http://itsfoss.com/manage-startup-applications-ubuntu/

作者:Abhishek 译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出