1. 远程连接管理
1.1 连接前置知识
1.1.1 IP地址(服务器位置)
IP地址是计算机在互联网上的唯一的地址编码。这个IP地址就相当于服务器所在的位置。如果要访问连接服务器,那就必须通过服务器的IP地址来实现,服务器的IP地址就相当于服务器的具体地址。
IP分类 | 说明 |
---|---|
公网IP | 可以在世界范围内进行访问的地址 |
私网IP | 局域网IP,只能在某个范围内使用,设备访问公网的话依然需要公网IP地址进行对应 |
在局域网中,预留了IP地址网段,专门用于局域网IP地址的分配:
- A类:
10
段,后三位自由分配,也就是10.0.0.0 - 10.255.255.255
; - B类:
172.16
段,后两位自由分配,也就是172.16.0.0 - 172.31.255.255
; - C类:
192.168
段,后两位自由分配,也就是192.168.0.0 - 192.168.255.255
;
每个局域网中的IP地址也是唯一的。
查看本机IP地址常用方法
- 方法一:
ifconfig
命令该命令是一个用于查看和配置网络接口的命令行工具,能显示网络接口的当前配置信息。部分Linux发行版默认没有该命令,需要进行安装。
在输出中找到对应网卡(eth0)里,inet行的内容就是
本机IP
、子网掩码、广播地址。# CentOS7需要安装软件包net-tools才能使用 [root@localhost ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.200 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::8e5c:3831:bf3d:9717 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ba:45:ec txqueuelen 1000 (Ethernet) RX packets 42760 bytes 61627314 (58.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7721 bytes 519644 (507.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 4 bytes 332 (332.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 332 (332.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 方法二:
ip address show
命令这种方法是较为常用的方法之一,是 ip 命令的一种用法。
ip 是 Linux 加强版的的网络配置工具,用于代替 ifconfig 命令。
[root@localhost ~]# ip address show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:ba:45:ec brd ff:ff:ff:ff:ff:ff inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::8e5c:3831:bf3d:9717/64 scope link noprefixroute valid_lft forever preferred_lft forever # 可以直接指定网卡查询 [root@localhost ~]# ip address show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:ba:45:ec brd ff:ff:ff:ff:ff:ff inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::8e5c:3831:bf3d:9717/64 scope link noprefixroute valid_lft forever preferred_lft forever
另外,根据实际操作得到的结果得知,可以不用完整的命令就可以得到想要的内容。例如:
ip addr
、ip a
都可以得到上述结果。
- 方法三:
hostname -I
hostname命令更多的用于显示和设置系统的主机名称。有两个选项,可以用来查看分配给设备的IP地址。
# -I:显示主机的所有网络地址。该选项会枚举所有网络接口上的所有配置地址。环回接口和 IPv6 链路本地地址省略。 [root@localhost ~]# hostname -I 10.0.0.200 [root@localhost ~]# hostname --all-ip-addresses 10.0.0.200 # 了解:-i:显示主机名的网络地址。请注意,只有在主机名可以解析的情况下才有效。 [root@localhost ~]# hostname -i ::1 127.0.0.1
1.1.2 端口(服务入口)
服务器上往往有很多个功能和服务,一台主机上的各种不同的服务功能都是通过端口来进行表示的。
服务 | SSH | HTTP | HTTPS | SNMP | Rsync |
---|---|---|---|---|---|
端口 | 22 | 80 | 443 | 161 | 873 |
例如,远程连接的服务端口号默认就是22,服务名称是SSH服务。这些端口号是可以通过服务配置文件进行修改的。
常用查看服务占用端口的方法:
- 方法一:使用
netstat
命令[root@localhost ~]# netstat -tulnp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1532/sshd tcp6 0 0 :::22 :::* LISTEN 1532/sshd
- 方法二:使用
ss
命令[root@localhost ~]# ss -tulnp | grep sshd tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1532,fd=3)) tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1532,fd=4))
1.1.3 协议(通信方式)
不同的服务提供不同的端口,对应于不同的功能,且其通信方式也可能不同,这种客户端和服务器之间的交流的通信方式,可以理解为协议。
一台主机上不同的服务功能都是通过端口来进行区分的。若是不同的服务端口,那么客户端和服务器之间通信时,可能会使用不同的协议。既然我们可以通过IP地址找到服务,那么就可以连接不同的端口来获得不同的服务,以及使用各种不同的协议。
连接的基本名词及对应功能
名称 中文名 含义 IP IP地址 找谁,在哪里 Port 端口 干啥,什么服务 Protocol 协议 什么语言,通信方式 实现远程连接服务器需要知道的信息:
IP地址
、远程连接服务
、远程服务对应端口号
、用户名
、密码
。
1.2 远程连接原理
1.2.1 SSH远程连接介绍
最常用的提供Linux远程连接服务的工具就是SSH软件。SSH分为SSH客户端和SSH服务器两部分,其中,SSH服务端包含的软件程序主要有openssh
和openssl
。
查询SSH服务端工具安装情况:
[root@localhost ~]# rpm -qa openssh openssl
openssl-1.0.2k-19.el7.x86_64
openssh-7.4p1-21.el7.x86_64
openssh 是提供SSH服务的程序;openssl 是为SSH提供连接加密的程序。
1.2.2 SSH服务端和客户端
- 服务端
启动Linux系统时,默认SSH服务程序会随着系统一起启动。SSH服务时一个守护进程(daemon),他在系统后台永久运行并时刻响应来自所有的SSH客户端的连接请求。
SSH服务端的进程名为sshd,负责实时监听远程SSH客户端的连接请求并进行处理,这些请求一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。
SSH服务时Linux系统优化时需要保留的开机自启动的服务之一。
- 客户端
SSH客户端就是远程访问SSH服务的工具。
常用的工具有SecureCRT、Xshell、putty、以及Linux下的SSH的客户端(命令行)。
1.2.3 SSH协议介绍
SSH服务端和SSH客户端之间的交流都是通过SSH协议来实现的。在进行数据传输之前,SSH先通过加密技术对联机数据包进行加密处理,然后再进行数据传输,这样就可以保证传输数据的安全。
SSH时专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露,在当前的生产环境中,绝大多数企业普遍采用SSH协议服务来替代传统的不安全的远程联机服务软件,如telnet等。
SSH协议有两个互不兼容的版本,SSH 1.x 和 SSH 2.x。
openssh 同时支持 SSH 1.x 和 SSH 2.x。用SSH 2.x 的客户端程序不能连接到 SSH 1.x 的服务程序上,SSH 2.x 比 SSH 1.x 更安全,默认情况下服务端通过 SSH 2.x 协议提供服务。
SSH 通信示意图
远程连接需要设置的要素
协议 | IP | 端口 | 用户名 | 密码 |
---|---|---|---|---|
SSH(加密) | 10.0.0.200 | 22 | root | 111111 |
Telnet(未加密) | 10.0.0.200 | 23 | root | 111111 |
1.2.4 远程连接Linux的工具
Linux服务器端守护程序选择了SSH服务,整个连接过程都会加密,因此会比较安全。
Windows系统连接Linux系统的话,则可以选择SecureCRT或Xshell工具;Linux系统连接,就用openssh自带的SSH客户端工具即可。
如果需要用图形进行远程管理,则建议选择vnc。
位置 | 命令行连接工具 | 图形管理工具 |
---|---|---|
服务端 | sshd(openssh、openssl) | vnc server |
客户端 | SecureCRT、Xshell、FinalShell等 | vnc client、xmanger等 |
1.2.5 SSH工具连接常见问题
问题一:连接超时问题
Xshell for Xmanager Enterprise 5 (Build 0769)
Copyright (c) 2002-2015 NetSarang Computer, Inc. All rights reserved.
Type `help' to learn how to use Xshell prompt.
[c:\~]$
Connecting to 10.0.0.200:22...
Could not connect to '10.0.0.200' (port 22): Connection failed.
Type `help' to learn how to use Xshell prompt.
[c:\~]$
如果遇到这个问题,则请检查Linux系统和客户端电脑端的网络连接是不是通畅的,最简单的方法就是在客户端电脑(DOS界面里)上ping一下Linux主机的IP。
如果未能ping通Linux主机的IP,则可以通过如下方法进行检查。
- 确定Linux主机本身的设置是不是正确,或是否获取到了IP,并且这个IP与客户端电脑的IP是不是在同一个网络里。
- Linux系统的防火墙是否阻挡了客户端电脑和Linux主机之间的22端口。关闭CentOS7 Linux防火墙的方法具体如下:
[root@localhost ~]# systemctl stop firewalld #<==关闭防火墙。
[root@localhost ~]# systemctl disable firewalld #<==禁止开机自启动。
问题二:SSH端口问题
1)sshd服务程序是否正确开启,确认的示例命令如下:
[root@localhost ~]# ps -ef|grep sshd|grep -v grep
root 7337 1 0 10:45 ? 00:00:00 /usr/sbin/sshd -D #<==若有这一行则表示服务正常
2)sshd服务的默认端口22是不是被更改了,确认的示例命令如下:
[root@localhost ~]# netstat -lntup|grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7337/sshd
tcp6 0 0 :::22 :::* LISTEN 7337/sshd
3)是否因为开启了firewalld防火墙而导致禁止连接,确认的示例代码如下:
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead) #<==表示非工作状态。
Docs: man:firewalld(1)
Jan 29 22:09:44 oldboy systemd[1]: Starting firewalld - dynamic firewall daemon...
Jan 29 22:09:45 oldboy systemd[1]: Started firewalld - dynamic firewall daemon.
Jan 30 13:15:59 www systemd[1]: Stopping firewalld - dynamic firewall daemon...
Jan 30 13:15:59 www systemd[1]: Stopped firewalld - dynamic firewall daemon.
检测是否开启了防火墙阻挡的简单方法是在客户端电脑或者在Xshell界面里执行telnet 10.0.0.200 22来检查连通性。
Type‘help' to learn how to use Xshell prompt.
[c:\~]$ telnet 10.0.0.200 22
Connecting to 10.0.0.200:22...
Connection established.
To escape to local shell,press 'Ctrl+Alt+]'
SSH-2.0-OpenSSH 7.4
4)客户端Xshell是不是配错了连接的端口或IP。
最后就是从连接的Xshell客户端设置检查,以查看配置是否正确,
1.3 SSH远程连接故障排查
1.3.1 故障排查思路
- 第1步:物理链路是否有问题?(客户端执行)
ping 10.0.0.200 # 排查客户端到服务端的线路问题,ping 是常用的网络连通性检查工具(路通否)。
tracert -d 10.0.0.200 # 路由跟踪命令,也可以检查路是否通畅,-d 是不进行反向解析。
- 第2步:是不是防火墙等安全策略阻挡?(服务端查看)
# 防火墙
systemctl stop firewalld
systemctl disable firewalld
# selinux
setenforce 0
# Linux下的防火墙,可能好心办坏事,阻挡了远程连接,22端口一般都是默认开放的,变更端口往往会出现这种问题。
- 第3步: SSH服务是否有问题?(客户端执行)
telnet 10.0.0.200 22
# 判断SSH服务器默认的22端口是否打开了。(客户端执行)
# 1.看端口是否打开;
# 2.看端口是否改变了;
# 3.看防火墙等问题;
nmap 10.0.0.200 -p 22
# 也能达到与telnet相同的效果,但nmap只能在Linux中使用
- 第4步: SSH服务是否有问题?(服务端执行)
netstat -lntup|grep sshd
# 确认服务和端口是否开放
- 第5步:其他配置错误等,例如网卡服务等
1.3.2 故障排查案例
假设远程Linux服务器的IP地址为10.0.0.200,现在要进行连接故障排查。
- 利用ping命令检查连通性(客户端执行)
ping 10.0.0.200 #<== 此命令适合Linux和Windows
这里通过ping命令从客户端发包到服务器,看看是否有数据包返回,从而确定物理链路是否通畅。
提示:也可以通过
tracert-d 10.0.0.200
(仅适合于Windows)或traceroute 10.0.0.200 -n
(适合于Linux)命令跟踪路由情况,这两个跟踪路由的命令一般用于广域网。
如果ping不通,可能是因为以下几点原因。
1)对应网卡是否激活(很多人在安装系统时没有勾选网卡开机自启动)。
2)网卡对应的IP是否配置正确。
3)虚拟机的网卡是不是桥接模式。
- 检查firewalld等防火墙策略是否阻挡了连接(服务端执行)
systemctl status firewalld
- 利用telnet或nmap命令检查(客户端执行)
telnet 10.0.0.200 22
nmap 10.0.0.200 -p 22 #<== 仅适合Linux,需要安装该软件包后才能使用。
通过该命令可以查看连接服务器端10.0.0.200的22端口是不是开通状态,因为SSH服务默认开启的是22端口。
- 系统中的SSHD服务是否正常开启,端口是否正确
[root@localhost ~]# netstat -lntup|grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7337/sshd
tcp6 0 0 :::22 :::* LISTEN 7337/sshd
- 检查连接的客户端,例如Xshell连接的IP、端口、协议等是否填写正确。
2. Linux命令行介绍
日常工作中,最常用的就是服务器的命令行模式进行管理服务。这里对命令行进行简单的介绍。
2.1 命令行提示符
Linux命令行结尾的提示符有“#
”和“$
”两种不同的符号,示例代码如下所示:
[root@localhost ~]# # <==这是超级管理员root用户对应的命令行。
[test@localhost ~]$ # <==这是普通用户oldboy对应的命令行。
root | @ | localhost | ~ | # |
---|---|---|---|---|
当前用户名 | 分隔符 | 主机名 | 当前位置 | 提示符 |
【命令行提示符解析】
#
是root用户登录后的命令行提示符,$
是普通用户的提示符;
@ 提示符之前
表示当前登录用户
@提示符之后
表示主机名
~
所在位置表示窗口当前用户所在的路径
【控制命令行提示符的环境变量
PS1
】
- 查看
PS1
,PS1
一定是大写[root@localhost ~]# echo $PS1 [\u@\h \W]\$ [root@localhost ~]# set | grep PS1 PS1='[\u@\h \W]\$ '
- 修改
PS1
[root@localhost ~]# PS1='[\u@\h \W \t]\$ ' [root@localhost ~ 09:22:24]# # 永久修改PS1,需要在配置文件中进行调整 # 1.使用vi编辑/etc/profile文件。 # 2.在最后加上:export PS1='[\u@\h \W \t]\$ # 3.然后保存退出,执行source /etc/profile重新加载。 # 举例: [root@localhost ~]# echo "PS1='\[\e[32;1m\][\u@\h \W]\\$ \[\e[0m\]'" >>/etc/profile # 《==亮绿色 [root@localhost ~]# source /etc/profile
- 这部分并不重要,所以只需要了解即可。
2.2 命令行操作
- 命令结构:
命令的结构一般是由三部分组成:命令、选项、参数。根据命令的特殊功能还会有其他部分,不再进行说明。
命令结构 | 说明 |
---|---|
命令 | 指令单位。Linux环境下通过命令控制整个系统。(一般是单词或缩写) |
选项 | 控制条件。同一个命令结合不同的选项实现不同的功能。 |
参数 | 控制条件。可以看作是命令处理的目标,比如文件、目录等。 |
一般就把选项和参数统称为参数即可。不是所有的常用的命令都需要加上参数、选项。
# 1. 【命令】,直接回车。例如: ls pwd reboot # 2. 【命令 参数】,回车。例如: cat /etc/sysconfig/network-scripts/ifcfg-eth0 vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 3. 【命令 选项 参数】,回车。例如: ls -l /etc/sysconfig/network-scripts/ rm -f test.txt
- 常用快捷键
快捷键 | 功能说明 |
---|---|
Tab | 命令或路径的补全键,是最常用的快捷键。 查找命令时,连续两次会显示出所有符合条件的命令 |
Ctrl + A、【Home】 | 光标回到命令行首 |
Ctrl + E、【End】 | 光标回到命令行尾 |
Ctrl + Insert | 复制命令行内容 |
Shift + Insert | 粘贴命令行内容 |
Ctrl + K | 剪切(删除)光标处到行尾的字符 |
Ctrl + U | 剪切(删除)光标处到行首的字符 |
Ctrl + Y | 粘贴Ctrl + U ,Ctrl + K 的文本 |
Ctrl + C | 中断终端正在执行的任务或者删除整行 |
Ctrl + D | 退出当前的shell命令行,也可以关闭Xshell |
Ctrl + R | 搜索命令行使用过的历史命令记录,使用快捷键 Ctrl + G 退出。 |
Ctrl + L | 清除屏幕上的所有内容,在最上方新开始一行,等同于clear命令。 |
Ctrl + Z | 暂停执行在终端运行的任务 |
!pw | 执行最近以"pw"开头的命令 |
!! | 执行上一条命令 |
!num | 执行历史命令列表中的第num 条命令 |
Esc + .(点) | 获取上一条命令的最后一部分,以空格为分界线 |
注意:上述快捷键适合于
SecureCRT
和Xshell
客户端。
2.3 查看命令帮助
遇到不会命令或者用法不确定的命令,我们可以通过多种方式查询他们的使用方法。
查询帮助方式 | 说明 |
---|---|
上网百度命令帮助 | 通过网络上的网站或者上传的文档了解命令使用方法。效率高 |
man | manual的缩写,用来查看系统中自带的各种参考手册 |
–help | 通过命令后携带参数 help 的方式来展示所查询命令的帮助文档 |
info帮助 | 比man更详细易懂,但是上手难,不常用 |
help | 通过执行内建的 help 命令查看帮助文档 |
【补充】
内部命令: shell 程序的一部分,Linux 系统加载运行时就被加载并驻留在系统内存里的,执行速度较快;
外部命令: 通过额外安装获得的命令,不随系统一起被加载到内容中,运行速度慢但功能强大。
2.3.1 man命令
man命令是Linux系统中最核心的命令之一,因为通过该命令,可以查看其他Linux命令的使用信息。man命令不仅可以查看命令(外部命令)的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等的帮助信息。
- 语法格式:
man [选项] 命令/文件 # 但是在使用过程中极少使用参数,而是直接加命令
- man命令的常用选项及说明
-f
:显示与指定关键字相关的手册页面。-k
:搜索手册页中与关键字匹配的条目。-a
:显示所有匹配的手册页面。-w
:仅显示手册页的位置,而不显示其内容。
- man命令章节号
man将命令进行分类,将各个属性的命令分到自己的章节中。在查询命令帮助的时候,通过章节号来表示分类。下表对分类进行简单说明。
数 字 | 说 明 | 简 解 |
---|---|---|
1 | Executable programs or shell commands | 可执行程序或shell命令 |
2 | System calls (functions provided by the kernel) | 系统调用(内核提供的函数) |
3 | Library calls (functions within program libraries) | 库调用(程序库中的函数) |
4 | Special files (usually found in /dev) | 特殊文件(通常在/dev中找到) |
5 | File formats and conventions eg /etc/passwd | 文件格式和约定,例如/etc/passwd |
6 | Games | 游戏 |
7 | Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) | 杂项(包括宏包和约定) |
8 | System administration commands (usually only for root) | 系统管理命令(通常仅适用于root) |
9 | Kernel routines [Non standard] | 内核例程[非标准] |
- 操作举例
# 直接查看命令的手册页面,以ls举例
man ls
# 查看指定章节的命令的手册页面,以sudo为例
man 8 sudo
# 如果指定错章节的话,会提示报错
man 1 sudo # No manual entry for sudo in section 1
# 要搜索包含特定关键字的手册页面条目,可以使用 -k 选项:
man -k keyword
一般常见的用法还是直接使用man命令,
不带参数
。
- 内容主要标题解释
man帮助信息中标题 | 功能说明 |
---|---|
NAME | 命令说明及介绍(常见)* |
SYNOPSIS | 命令的基本使用语法(常见)* |
DESCRIPTION | 详细描述命令,以及相关参数选项说明(常见)* 有的命令会单独使用参数选项,例如,把“COMMAND LINE OPTIONS或OPTIONS分开介绍” |
OPTIONS | 命令相关参数选项说明(有的命令帮助没有此项)* |
COMMANDS | 执行这个程序(软件)的时候,可以在此程序(软件)中执行的命令(不常见) |
FILES | 程序涉及(或使用或关联)的相关文件(不常见) |
EXAMPLES | 命令的一些例子、这块有时很有用*(不常见) |
SEE ALSO | 与命令相关的信息说明 |
BUGS(REPORTING BUGS) | 命令所对应的缺陷问题描述 |
COPYRIGHT | 版权信息相关声明 |
AUTHOR | 作者介绍 |
- 执行“man命令”进入到man帮助页面中,实际上就相当于是浏览一个文本文件,可以利用下表中的快捷键快速浏览查阅想要查找的内容。
操作键 | 功能说明 |
---|---|
【Page Down】 | 向下翻一页(可以用空格键替代) |
【Page Up】 | 向上翻一页 |
【Home】 | 跳转到首页(Xshell 5 中不好用) |
【End】 | 跳转到尾页(Xshell 5 中不好用) |
/字符串 | 向下依次查找字符串内容 |
?字符串 | 向上依次查找字符串内容 |
【q】 | 结束man帮助 |
注意事项:
如果想要看到中文的man帮助手册,这种情况可以将系统调整为中文的字符集或单独安装man的中文包,不过遗憾的是,man的中文手册内容“年久失修”,与英文手册相去甚远。
2.3.2 help命令和–help参数
help命令 的使用方法与man命令类似,但是所查询的命令范围与man命令不一样,主要用于查询内部命令的帮助。
–help 获取的是基础常用的帮助信息,而且可以通过调整字符集系统来显示中文(部分显示中文),是man的精简版本。
- 语法格式:
help 命令
命令 --help
- 调整字符集系统来显示中文(部分中文)
[root@localhost ~]# echo $LANG
en_US.UTF-8
[root@localhost ~]# LANG='zh_CN.UTF-8'
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
[root@localhost ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all 不隐藏任何以. 开始的项目
-A, --almost-all 列出除. 及.. 以外的任何项目
--author 与-l 同时使用时列出每个文件的作者
-b, --escape 以八进制溢出序列表示不可打印的字符
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
是使用“man命令”还是“–help命令”呢?
建议结合使用,“–help命令”获取的是基础常用的帮助信息,“man命令”获取的是更多更复杂的帮助信息。
日常使用顺序:使用顺序建议先用man命令,找不到再使用help命令。
2.4 关机重启注销命令
2.4.1 重启或关机:shutdown
shutdown
是一个用来安全关机和重启Linux系统的命令,在系统关闭之前会通知所有登录的用户,系统即将关闭,期间新用户也无法登录。
- 语法格式:
shutdown [OPTION]... TIME [MESSAGE]
shutdown [选项] 时间 消息
-
技巧说明:
- 注意shutdown命令与后面的选项之间至少要有一个空格。
- 通常情况下,我们执行的shutdown命令为
shutdown-h now
或shutdown-r now
。
-
shutdown命令的参数选项及说明
参数选项 | 解释说明 |
---|---|
-r | 重启系统,而不是关机,这个参数在系统重启时经常使用,例如,shutdown -r now |
-h | 关机,这个参数在系统关机时经常使用,例如,shutdown -h now |
-H | 关机(halt),经过测试,使用这个参数对系统进行关机后,系统其实并未完全关机,需要手动切断电源,不常用 |
-P | 关机 (poweroff),不常用 |
-c | 取消正在执行的shutdown指令,不常用 |
-k | 只发送关机警告信息并拒绝新用户登录,但是并不实际关机,不常用 |
-
shutdown命令常用方式
shutdown -r now # 立刻重启 shutdown -h now # 立刻关机 shutdown -r +5 # 设置5分钟之后重启系统,关机同样。但在未关机之前可以Ctrl+C 取消命令 shutdown -h 11:00 # 设置11:00关机
2.4.2 关机与重启:其他
除了shutdown
之外,还可以使用reboot
、init 6
执行重启,halt
、poweroff
、init 0
执行关机。
工作中最常用的重启命令是reboot
,常用关机命令是halt
。
halt、poweroff、reboot这三个命令对应的是同一个man帮助文档,
而halt、poweroff、shutdown、reboot命令都是systemctl命令的链接文件(CentOS7)
[root@localhost ~]# ls -l `which reboot` `which poweroff` `which halt` `which shutdown` lrwxrwxrwx. 1 root root 16 Jan 29 23:20 /usr/sbin/halt -> ../bin/systemctl lrwxrwxrwx. 1 root root 16 Jan 29 23:20 /usr/sbin/poweroff -> ../bin/systemctl lrwxrwxrwx. 1 root root 16 Jan 29 23:20 /usr/sbin/reboot -> ../bin/systemctl lrwxrwxrwx. 1 root root 16 Jan 29 23:20 /usr/sbin/shutdown -> ../bin/systemctl [root@localhost ~]# which systemctl /usr/bin/systemctl
在CentOS7中,将以上四个命令整合成一个命令systemctl,使用时 systemctl + 那四个命令
。
CentOS 7 系统中systemctl 命令 | 功能 |
---|---|
systemctl reboot | 重启系统 |
systemctl poweroff | 关闭系统,并且切断电源 |
systemctl halt | 关闭系统,并且CPU停止工作 |
systemctl suspend | 暂停系统 |
systemctl hibernate | 让系统进入冬眠状态 |
systemctl hybrid-sleep | 让系统进入交互式休眠状态 |
systemctl rescue | 启动进入救援状态(单用户状态) |
当然,在命令行中使用reboot、poweroff、halt命令依然有效。
2.4.3 注销命令:logout/exit
可以注销退出当前命令的窗口,可以使用 logout、exit 命令或快捷键 Ctrl + D
实现。