远程连接和命令行基础

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 addrip 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 端口(服务入口)

服务器上往往有很多个功能和服务,一台主机上的各种不同的服务功能都是通过端口来进行表示的。

服务SSHHTTPHTTPSSNMPRsync
端口2280443161873

例如,远程连接的服务端口号默认就是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地址找到服务,那么就可以连接不同的端口来获得不同的服务,以及使用各种不同的协议。

连接的基本名词及对应功能

名称中文名含义
IPIP地址找谁,在哪里
Port端口干啥,什么服务
Protocol协议什么语言,通信方式

实现远程连接服务器需要知道的信息:IP地址远程连接服务远程服务对应端口号用户名密码

1.2 远程连接原理

1.2.1 SSH远程连接介绍

最常用的提供Linux远程连接服务的工具就是SSH软件。SSH分为SSH客户端和SSH服务器两部分,其中,SSH服务端包含的软件程序主要有opensshopenssl

查询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.20022root111111
Telnet(未加密)10.0.0.20023root111111

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,则可以通过如下方法进行检查。

  1. 确定Linux主机本身的设置是不是正确,或是否获取到了IP,并且这个IP与客户端电脑的IP是不是在同一个网络里。
  2. 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 + UCtrl + K的文本
Ctrl + C中断终端正在执行的任务或者删除整行
Ctrl + D退出当前的shell命令行,也可以关闭Xshell
Ctrl + R搜索命令行使用过的历史命令记录,使用快捷键 Ctrl + G退出。
Ctrl + L清除屏幕上的所有内容,在最上方新开始一行,等同于clear命令。
Ctrl + Z暂停执行在终端运行的任务
!pw执行最近以"pw"开头的命令
!!执行上一条命令
!num执行历史命令列表中的第num条命令
Esc + .(点)获取上一条命令的最后一部分,以空格为分界线

注意:上述快捷键适合于SecureCRTXshell客户端。

2.3 查看命令帮助

遇到不会命令或者用法不确定的命令,我们可以通过多种方式查询他们的使用方法。

查询帮助方式说明
上网百度命令帮助通过网络上的网站或者上传的文档了解命令使用方法。效率高
manmanual的缩写,用来查看系统中自带的各种参考手册
–help通过命令后携带参数 help 的方式来展示所查询命令的帮助文档
info帮助比man更详细易懂,但是上手难,不常用
help通过执行内建的 help 命令查看帮助文档

【补充】

内部命令: shell 程序的一部分,Linux 系统加载运行时就被加载并驻留在系统内存里的,执行速度较快;

外部命令: 通过额外安装获得的命令,不随系统一起被加载到内容中,运行速度慢但功能强大。

2.3.1 man命令

man命令是Linux系统中最核心的命令之一,因为通过该命令,可以查看其他Linux命令的使用信息。man命令不仅可以查看命令(外部命令)的使用帮助,还可以查看软件服务配置文件、系统调用、库函数等的帮助信息。

  • 语法格式:
man [选项] 命令/文件        # 但是在使用过程中极少使用参数,而是直接加命令
  • man命令的常用选项及说明
  • -f:显示与指定关键字相关的手册页面。
  • -k:搜索手册页中与关键字匹配的条目。
  • -a:显示所有匹配的手册页面。
  • -w:仅显示手册页的位置,而不显示其内容。
  • man命令章节号

man将命令进行分类,将各个属性的命令分到自己的章节中。在查询命令帮助的时候,通过章节号来表示分类。下表对分类进行简单说明。

数 字说 明简 解
1Executable programs or shell commands可执行程序或shell命令
2System calls (functions provided by the kernel)系统调用(内核提供的函数)
3Library calls (functions within program libraries)库调用(程序库中的函数)
4Special files (usually found in /dev)特殊文件(通常在/dev中找到)
5File formats and conventions eg /etc/passwd文件格式和约定,例如/etc/passwd
6Games游戏
7Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)杂项(包括宏包和约定)
8System administration commands (usually only for root)系统管理命令(通常仅适用于root)
9Kernel 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 nowshutdown-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之外,还可以使用rebootinit 6执行重启,haltpoweroffinit 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 实现。

  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值