欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux 登录、注销与关机

程序员文章站 2022-07-04 09:34:04
Linux 登录、注销与关机 这里主要学习的是命令行环境下的相关操作。 一、登录 Linux 默认的情况下会提供六个终端来让用户登录,切换的方式为使用:【Ctrl + Alt + F1 ~ F6】的组合键。系统会将 [F1] ~ [F6] 命名为 tty1 ~ tty6 的操作接口环境。 也就是说, ......

linux 登录、注销与关机

这里主要学习的是命令行环境下的相关操作。

一、登录

linux 默认的情况下会提供六个终端来让用户登录,切换的方式为使用:【ctrl + alt + f1 ~ f6】的组合键。系统会将 [f1] ~ [f6] 命名为 tty1 ~ tty6 的操作接口环境。

也就是说,当你按下 【ctrl + alt + f1】时,就会进入到 tty1 的终端界面中,同样的 [f2] 就是 tty2。

tty 是 teletype 的缩写。teletype 是最早出现的一种终端设备,类似电传打字机,是由 teletype 公司生产的。

在 centos 7 环境下,当启动完成后,默认系统只会提供给你一个 tty。因此,无论是命令行界面还是图形界面,都会出现在 tty1。tty2 ~ tty6 一开始是不存在的,当你使用上面的组合键进行切换时,系统才会产生相应的终端界面。

命令行模式下的登录界面像下面这样:

centos linux 7 (core)
kernel 3.10.0-957.21.3.el7.x86_64 on an x86_64
centos7 login: alight
password:
last login: thu jul 25 11:45:30 on tty1
[alight@centos7 ~]$ 

上面显示内容的具体含义是这样的:

  1. centos linux 7 (core)

    linux 发行版的名称(centos)与版本(7)。

  2. kernel 3.10.0-957.21.3.el7.x86_64 on an x86_64

    linux 内核的版本为 3.10.0-957.21.3.el7.x86_64,且目前这台主机的硬件架构为 x86_64

  3. centos7 login:

    其中,centos7 是你的主机名,是在安装系统时进行设置的。而 login: 则是一个可以让我们登录的提示符,你可以在 login: 后面输入你的账号。这里我输入的是自己的账号 alight。你也可以使用 root 账号进行登录,但由于 root 账号在 linux 系统下代表无穷的权限,所以尽量不要使用 root 账号登录。

  4. password:

    这是一个让我们输入密码的提示符。请注意,输入密码的时候,屏幕上不会显示任何输入或代表输入的字符,所以不要以为你的键盘坏掉了。

  5. last login: thu jul 25 11:45:30 on tty1

    当用户登录系统后,系统会列出上一次这个账号登录系统的时间与终端名称。建议还是看看这个信息,是否真的是自己的登录。

  6. [alight@centos7 ~]$

    这一行是用户正确登录后才会显示的信息。最左边的 alight 显示的是目前用户的账号,而 @ 之后接的 centos7 是主机名,~ 则指的是目前所在的目录,最右边的 $ 则是提示字符。

    ~ 符号代表的是 “用户的家目录” 的意思,它是个变量。举例来说,root 的家目录在 /root, 则 ~ 就代表 /root 的意思。而 alight 的家目录在 /home/alight,所以如果以 alight 账号登录时,此时看到的 ~ 就相当于 /home/alight

    在 linux 中,默认 root 的提示字符是 #,而一般身份用户的提示字符为 $

以上就是 linux 系统的登录,再次强调在 linux 系统下最好使用一般账号登录。因为系统管理员账号 root 具有无穷大的权限,例如它可以删除任何一个文件或目录。

因此,系统管理人员通常都会具有两个账号,平时以自己的一般账号来使用主机的资源,在需要用到系统功能设置时,才切换到 root 身份。

二、注销

注销 linux(离开系统)其实很简单,直接输入 exit 命令即可:

[alight@centos7 ~]$ exit

请注意:注销并不是关机。基本上,linux 本身已经有相当多的任务在进行,登录也只是其中的一个任务而已,所以当你注销(离开)时,这次登录的任务就停止了,而其他的任务还在继续进行中。

三、关机

在 linux 系统下,由于每个程序(或者说是服务)都是在后台执行。因此,在你看不到的屏幕后面其实可能有相当多人同时在你的主机上面工作,如果你直接按下电源开关来关机时,则其他人的数据可能就此中断。

此外,最大的问题是,若不正常关机,还有可能造成文件系统的损毁(因为来不及将数据回写到文件中,所以有些服务的文件会有问题)。所以正常情况下,要关机时需要注意以下几个方面。

  • 观察系统的使用状态

    如果要查看目前有谁在线,可以执行 who 这个命令;如果要看网络的联机状态,可以执行 netstat -a 这个命令;如果要看后台执行的程序可以执行 ps -aux 这个命令,使用这此命令可以让你稍微了解主机目前的使用状态,进而可以让你判断是否可以关机。

  • 通知在线用户关机的时刻

    要关机前总得给在线的用户一些时间来结束它们的工作,所以,这个时候你可以使用 shutdown 命令来达到此目的。

  • 正确关机命令的使用

    例如 shutdownreboot 两个命令。

  • 将数据同步写入硬盘中的命令:sync

  • 常用的关机命令:shutdown

  • 重新启动,关机:reboothaltpoweroff

由于 linux 系统的关机或重新启动是很重大的系统操作,因此只有 root 才能够执行例如 shutdownreboot 等命令。不过在某些发行版中,例如 centos 系统,它允许你在本机前的 tty1 ~ tty6 中,可以用一般账号来关机或重新启动,但某些发行版需要你输入 root 的密码。

数据同步写入磁盘:sync

在计算机运行时,所有的数据都得要读入会内存后才能够被 cpu 处理,而数据又常常需要由内存写回硬盘当中(例如保存的操作)。由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入或读出,系统的性能就不会太好。

因此在 linux 系统中,为了加快数据的读取速度,在默认的情况下,某些已经加载到内存中的数据将不会直接被写回硬盘,而是先暂存在内存当中。这样一来,如果一个数据被重复改写,由于它尚未被写入硬盘,因此可以直接由内存当中读取出来,在速度上一定是快很多的。

但是,万一你的系统因为某些情况造成不正常关机时,由于数据尚未被写入硬盘当中,所以就会造成数据的更新不正常。这个时候就需要 sync 这个命令来进行数据的写入操作。直接在命令行模式下输入 sync,则在内存中尚未被更新的数据,就会写入硬盘中。所以,在系统关机或重新启动之前,最好多执行几次这个命令。

[alight@centos7 ~]$ su -
password:
last login: sat jul 20 15:08:30 cst 2019 on pts/0
[root@centos7 ~]$ sync

su - 这个命令可以切换到 root 身份,需要输入密码。

sync 也可以被一般账号使用,只不过一般账号更新的硬盘数据就只有自己的数据,而 root 可以更新整个系统中的数据。

常用的关机命令:shutdown

我们关机时经常使用的是 shutdown 这个命令,而这个命令会通知系统内的各个进程(processes),并且将通知系统中的一些服务来关闭。shutdown 可以完成如下的工作:

  • 可以*选择关机模式:关机或重启。
  • 可以设置关机时间:可设置成立刻关机,也可设置某一个特定的时间才关机。
  • 可以自定义关机信息:在关机之前,可以将自己设置的信息发送给在线用户。
  • 可以仅发出警告信息:有时可能要进行一些测试,而不想让其他的用户干扰,或是明确地告诉用户某段时间要注意一下,这时可以使用 shutdown 来吓一吓用户,但却不是真的要关机。

shutdown 简单的语法规则如下:

shutdown [-krhc] [time] [wall]

选项与参数:
-k  : 不是真的关机,只是发送警告信息出去。
-r  : 在将系统的服务停掉之后就重新启动(常用)。
-h  : 将系统的服务停掉后,立即关机(常用)。
-c  : 取消已经在进行的 shutdown 命令内容。
time: 指定系统关机的时间。若没指定,则默认 1 分钟后自动进行。
wall: 要发送的警告信息。
[root@centos7 ~]# shutdown -h 10 'i will shutdown after 10 mins'
shutdown scheduled for fri 2019-07-26 16:34:21 cst, use 'shutdown -c' to cancel.
[root@centos7 ~]# 
broadcast message from root@centos7 (fri 2019-07-26 16:24:21 cst):

i will shutdown after 10 mins
the system is going down for power-off at fri 2019-07-26 16:34:21 cst!

在执行 shutdown 之后,系统告诉大家,这台机器会在十分钟后关机,并且会将信息显示在目前登录者的屏幕上。你可以输入 shutdown -c 来取消这次的关机命令。下面提供几个常见的时间参数进行参考。

[root@centos7 ~]# shutdown -h now
立即关机,其中 now 相当于时间为 0 的状态。
[root@centos7 ~]# shutdown -h 20:25
系统在今天的 20:25 关机,若在 20:26 才执行此命令,则明天的 20:25 才关机。
[root@centos7 ~]# shutdown -h +10
系统十分钟后关机。
[root@centos7 ~]# shutdown -r now
系统立即重新启动。
[root@centos7 ~]# shutdown -r +30 'the system will reboot'
系统三十分钟后重新启动,并显示后面的信息给所有在线的使用者。
[root@centos7 ~]# shutdown -k now 'this system will reboot'
仅发出警告信息,系统并不会关机。

重新启动,关机:reboothaltpoweroff

[root@centos7 ~]# sync; sync; sync; reboot
重新启动。虽然目前的 shutdow、reboot、halt 等命令都已经在关机前进行了 sync 这个程序的调用,不过多做几次总是比较放心点。
[root@centos7 ~]# halt
系统停止,屏幕可能会保留系统已经停止的信息。
[root@centos7 ~]# poweroff
系统关机,所以没有提供额外的电力,屏幕空白。

更多 haltpoweroff 的选项功能,请务必使用 man 去查询一下。

实际使用管理工具 systemctl 关机

目前系统中所有服务的管理是使用 systemctl 这个命令。这个命令相当复杂,这里只学习与关机有关的部分。

请注意,上述 haltpoweroffrebootshutdown 等,其实都是调用 systemctl 这个命令。这个命令与关机有关的语法如下:

systemctl [命令]

命令包括:
halt        进入系统停止模式,屏幕可能会保留一些信息。
poweroff    进入系统关机模式,直接关机。
reboot      直接重新启动。
shutdown    进入休眠模式。
[root@centos7 ~]# systemctl reboot
系统重新启动。
[root@centos7 ~]# systemctl poweroff
系统关机。

学习参考资料:

《鸟哥的 linux 私房菜 - 基础学习篇(第四版)》第 4 章