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

Linux常用指令(三)

程序员文章站 2022-05-15 14:02:58
...

1. sync

当我们在计算机上保存数据的时候,其实是先在内存中保存一定时间,再写入硬盘。这其实是一种缓存机制,当在内存中保存的数据需要被读取的时候,从内存中读取要比从硬盘中读取快得多。
不过,这也会带来一些问题,如果数据还没有来得及保存到硬盘中,就发生了突然岩机(比如断电)的情况,数据就会丟失。
sync 命令的作用就是把内存中的数据强制向硬盘中保存。这个命令在常规关机的命令中其实会自动执行,但如果不放心,则应该在关机或重启之前手工执行几次,避免数据丟失。

sync 命令的信息如下:

  • 命令名称:sync。
  • 英文原意:flush file system buffers。
  • 所在路径:/bin/sync。
  • 执行权限:所有用户。
  • 功能描述:刷新文件系统缓冲区。

sync 命令直接执行就可以了,不需要任何选项。

[[email protected] ~]# sync

记得关机或重启之前多执行几次 sync 命令,多一重保险总是好的。

 

2. shutdown

shutdown 命令的基本信息如下。

  • 命令名称:shutdown。
  • 英文原意:bring the system down。
  • 所在路径:/sbin/shutdown。
  • 执行权限:超级用户。
  • 功能描述:关机和重启

命令格式

[[email protected] ~]# shutdown [选项] 时间 [警告信息]
选项:
-c:取消已经执行的 shutdown 命令;
-h:关机;
-r:重启;

【例 1】重启与定时重启。
先来看看如何使用 shutdown 命令进行重启:

[[email protected] ~]# shutdown -r now
#重启, now是现在重启的意思
[[email protected] ~]# shutdown -r 05:30
#指定时间重启,但会占用前台终端
[[email protected] ~]# shutdown -r 05:30 &
#把定义重启命令放入后台,&是后台的意思
[[email protected] ~]# shutdown -c
//取消定时重启
[[email protected] ~]# shutdown -r +10
#10分钟之后重启


【例 2】关机和定时关机。

[[email protected] ~]# shutdown -h now
#现在关机
[[email protected] ~]# shutdown -h 05:30
#指定时间关机

reboot命令

在现在的系统中,reboot 命令也是安全的,而且不需要加入过多的选项。

[[email protected] ~]# reboot
#重启

halt和poweroff命令

这两个都是关机命令,直接执行即可。
[[email protected] ~]# halt
#关机
[[email protected] ~]# poweroff
#关机

init命令

init 是修改 Linux 运行级别的命令,也可以用于关机和重启。

[[email protected]~]# init 0
#关机,也就是调用系统的 0 级别
[[email protected] ~】# init 6
#重启,也就是调用系统的 6 级别

3. setup

Linux 当然也需要配置 IP 地址才可以正常使用网络。其实 Linux 主要是通过修改网卡配置文件来永久修改 IP 地址的。setup 是一个简化命令,是 Red Hat 系列专有的命令,其他的 Linux 系列不一定有此命令。

setup 命令的基本信息如下。

  • 命令名称:setup。
  • 英文原意:A text mode system configuration tool。
  • 所在路径:/usr/bin/setup。
  • 执行权限:所有用户。
  • 功能描述:系统配置工具。

setup 命令会开启一个图形化的配置工具

4. ifconfig

ifconfig 是 Linux 中査看和临时修改 IP 地址的命令,其基本信息如下:

  • 命令名称:ifconfig。
  • 英文原意:configure a network interface。
  • 所在路径:/sbin/ifconfig。
  • 执行权限:超级用户。
  • 功能描述:配置网络接口。

查看IP地址信息

ifconfig 命令最主要的作用就是査看 IP 地址的信息,直接输入ifconfig命令即可。

临时配置 IP 地址

ifconfig 命令除可以査看 IP 地址之外,还可以临时配置 IP 地址,但是一旦重启,IP 地址就会失效,所以我们还是应该使用 setup 命令进行 IP 地址配置。使用 ifconfig 命令临时配置 IP 地址的示例如下:

[[email protected] ~]#ifconfig eth0 192.168.44.3
#配置IP地址,不指定子网掩码就会使用标准子网掩码
[[email protected] ~]#ifconfig eth0 192.168.44.3 netmask 255.255.255.0
#配置IP地址,同时配置子网掩码

5. ping

ping 是常用的网络命令,主要通过 ICMP 协议进行网络探测,测试网络中主机的通信情况。

ping 命令的基本信息如下。

  • 命令名称:ping。
  • 英文原意:send ICMP ECHO_REQUEST to network hosts。
  • 所在路径:/bin/ping。
  • 执行权限:所有用户。
  • 功能描述:向网络主机发送 ICMP 请求。

命令的基本格式如下:

[[email protected] ~]# ping [选项] IP

选项:

-b: 后面加入广播地址,用于对整个网段进行探测;
-c 次数: 用于指定 ping 的次数;
-s 字节: 指定探测包的大小;

【例 1】 探测与指定主机通信。

[[email protected] ~]#ping 192.168.103.151
PING 192.168.103.151 (192.168.103.151) 56(84) bytes of data.
64 bytes from 192.168.103.151: icmp_seq=1 ttl=128 time=0.300 ms
64 bytes from 192.168.103.151: icmp_seq=2 ttl=128 time=0.481 ms
…省略部分内容...
#探测与指定主机是否通信

Linux是一个比较实在的操作系统,这个 ping 命令如果不使用"Ctrl+C"快捷键强行中止,就会一直 ping 下去,直到天荒地老……

【例 2】指定 ping 的次数。
既然 ping 这么"实在",如果不想一直 ping 下去,则可以使用"-c"选项指定 ping 的次数。例如:

[[email protected] ~]# ping -c 3 192.168.103.151
#只探测3次,就中止ping命令


【例 3】 探测网段中的可用主机。
在 ping 命令中,可以使用"-b"选项,后面加入广播地址,探测整个网段。我们可以使用这个选项知道整个网络中有多少主机是可以和我们通信的,而不用一个一个 IP 进行探测。例如:

[[email protected] ~]# ping -b -c 3 192.168.103.255
WARNING: pinging broadcast address
PING 192.168.103.255 (192.168.103.255) 56(84) bytes of data.
64 bytes from 192.168.103.199: icmp_seq=1 ttl=64 time=1.95ms
64 bytes from 192.168.103.168: icmp_seq=1 ttl=64 time=1.97ms(DUP!)
64 bytes from 192.168.103.252: icmp_seq=1 ttl=64 time=2.29ms(DUP!)
…省略部分内容...
#探测192.168.103.0/24网段中有多少可以通信的主机

 6. netstat

 

我们需要先简单了解一下端口的作用。在互联网中,如果 IP 地址是 IP 服务器在互联网中唯一的地址标识,那么大家可以想象一下:我有一台服务器,它有固定的公网 IP 地址,通过 IP 地址可以找到我的服务器。但是我的服务器中既启动了网页服务(Web 服务),又启动了文件传输服务(FTP 服务),那么你的客户端访问我的服务器,到底应该如何确定你访问的是哪一个服务呢?

端口就是用于网络通信的接口,是数据从传输层向上传递到应用层的数据通道。我们可以理解为每个常规服务都有默认的端口号,通过不同的端口号,我们就可以确定不同的服务。也就是说,客户端通过 IP 地址访问到我的服务器,如果数据包访问的是 80 端口,则访问的是 Web 服务;而如果数据包访问的是 21 端口,则访问的是 FTP 服务。

我们可以简单地理解为每个常规服务都有一个默认端口(默认端口可以修改),这个端口是所有人都知道的,客户端可以通过固定的端口访问指定的服务。而我们通过在服务器中查看已经开启的端口号,就可以判断服务器中开启了那些服务。

netstat 是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。netstat 命令的基本信息如下。

  • 命令名称:netstat。
  • 英文原意:Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships。
  • 所在路径:/bin/netstat.
  • 执行权限:所有用户。
  • 功能描述:输出网络连接、路由表、接口统计、伪装连接和组播成员。

 

命令格式如下:

[[email protected] ~]# netstat [选项]

选项:

-a:列出所有网络状态,包括 Socket 程序;
-c秒数:指定每隔几秒刷新一次网络状态;
-n:使用 IP 地址和端口号显示,不使用域名与服务名;
-p:显示 PID 和程序名;
-t:显示使用 TCP 协议端口的连接状况;
-u:显示使用 UDP 协议端口的连接状况;
-I:仅显示监听状态的连接;
-r:显示路由表;

【例 1】查看本机开启的端口。
这是本机最常用的方式,使用选项"-tuln"。因为使用了"-I"选项,所以只能看到监听状态的连接,而不能看到已经连接状态的连接。例如:

[[email protected] ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp  0  0 0.0.0.0:3306  0.0.0.0:* LISTEN
tcp  0  0 0.0.0.0:11211 0.0.0.0:* LISTEN
tcp  0  0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp  0  0:::11211 :::* LISTEN
tcp  0  0 :::80 :::* LISTEN
tcp  0   0 :::22 :::* LISTEN
udp  0   0 0.0.0.0:11211 0.0.0.0:*
udp  0   0:::11211 :::*
#协议接收队列发送队列本机的 IP 地址及端口号 远程主机的 IP 地址及端口号 状态

这个命令的输出较多。
1) Proto:网络连接的协议,一般就是 TCP 协议或者 UDP 协议。
2) Recv-Q:表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。
3) Send-Q:表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,不具备 ACK 标志的数据包。
4) Local Address:本机的 IP 地址和端口号。
5) ForeignAddress:远程主机的 IP 地址和端口号。
6) State:状态。常见的状态主要有以下几种。

  • -LISTEN:监听状态,只有 TCP 协议需要监听,而 UDP 协议不需要监听。
  • -ESTABLISHED:已经建立连接的状态。如果使用"-I"选项,则看不到已经建立连接的状态。
  • -SYN_SENT:SYN 发起包,就是主动发起连接的数据包。
  • -SYN_RECV:接收到主动连接的数据包。
  • -FIN_WAIT1:正在中断的连接。
  • -FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认。
  • -TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束。
  • -CLOSED:套接字没有被使用。


在这些状态中,我们最常用的就是 LISTEN 和 ESTABLISHED 状态,一种代表正在监听,另一种代表已经连接。

7. write

在服务器上,有时会有多个用户同时登录,一些必要的沟通就显得尤为重要。比如,我必须关闭某个服务,或者需要重启服务器,当然需要通知同时登录服务器的用户,这时就可以使用 write 命令。

write 命令的信息如下:

  • 命令名称:write。
  • 英文原意:send a message to another user。
  • 所在路径:/usr/bin/write。
  • 执行权限:所有用户。
  • 功能描述:向其他用户发送信息。


write 命令的基本格式如下:

[[email protected] ~]# write 用户名 [终端号]

write 命令没有多余的选项,我们要向在某个终端登录的用户发送信息,就可以这样来执行命令:

[[email protected] ~]#write user1 pts/1
hello
I will be in 5 minutes to restart, please save your data
#向在pts/1 (远程终端1)登录的user1用户发送信息,使用"Ctrl+D"快捷键保存发送的数据

这时,user1 用户就可以收到你要在 5 分钟之后重启系统的信息了。 

8. mail 

mail 是 Linux 的邮件客户端命令,可以利用这个命令给其他用户发送邮件。

mail 命令的基本信息如下。

  • 命令名称:mail。
  • 英文原意:send and receive Internet mail。
  • 所在路径:/bin/mail。
  • 执行权限:所有用户。
  • 功能描述:发送和接收电子邮件。

【例 1】发送邮件。
如果我们想要给其他用户发送邮件,则可以执行如下命令:

[[email protected] ~]# mail userl
Subject: hello <-邮件标题
Nice to meet you! <-邮件具体内容
. <-使用.来结束邮件输入
#发送邮件给user1用户

我们接收到的邮件都保存在"/var/spod/mail/用户名"中,每个用户都有一个以自己的用户名命名的邮箱。

【例 2】发送文件内容。
如果我们想把某个文件的内容发送给指定用户,则可执行如下命令:

[[email protected] ~]# mail -s "test mail" root </root/ anaconda-ks.cfg
#把/root/anaconda-ks.cfg文件的内容发送给root用户

选项:
-s: 指定邮件标题

我们在写脚本时,有时需要脚本自动发送一些信息给指定用户,把要发送的信息预先写到文件中,是一个非常不错的选择。

【例 3】查看已经接收的邮件。
我们可以直接在命令行中执行 mail 命令,进入 mail 的交互命令中,可以在这里査看已经接收到的邮件。例如:

[[email protected] ~]# mail
Heirloom Mail version 12.4 7/29/08.Type ?for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 root Mon Dec 5 22:45 68/1777 "test mail"<-之前收到的由件
>N 2 root Mon Dec 5 23:08 18/602 "hello"
#未阅读编号发件人 时间 标题
&
<-等待用户输入命令

可以看到已经接收到的邮件列表,"N"代表未读邮件,如果是已经阅读过的邮件,则前面是不会有这个"N"的;之后的数字是邮件的编号,我们主要通过这个编号来进行邮件的操作。如餓们想要査看第1邮件,则只需输入邮件的编号"1"就可以了