Linux最常用的几个系统管理命令

仅个人想法,会持续不间断更新和改进。

看看网络,确认一下目前的状态,看看有没有异常进程。

查看网络信息的原初 ifconfig

Linux ifconfig命令用于显示或设置网络设备,在调试或调优的时间经常使用。

官方定义为:

ifconfig – configure a network interface

对于这个命令,一般只要掌握如何查看,如何设置IP地址基本就可以了,对于网络钻的比较深的,还需要更多一些参数。

使用方法为:# 显示$ ifconfig [-v] [-a] [-s] [interface]
# 设置$ ifconfig [-v] interface [aftype] options | address …

一些参数的含义为:

  • -a :显示所有网卡的状态,即使是down的状态
  • -s:显示一个短列表
  • interface mtu N  设置最大传输单元【需要管理员权限】
  • netmask addr:设置掩码地址【需要管理员权限】
  • interface up     激活网卡【需要管理员权限】
  • interface down   关闭网卡【需要管理员权限】
  • interface hw ether xx.xx.xx.xx.xx.xx 设置MAC地址【需要管理员权限】

默认无参数使用

如果不指定任何参数,直接显示当前活动的接口,如下:$ ifconfigeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500       inet 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255       inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>       inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x0<global>       ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)       RX packets 5634431 bytes 4994127142 (4.6 GiB)       RX errors 0 dropped 0 overruns 0 frame 0       TX packets 858051 bytes 109858013 (104.7 MiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0       device memory 0xc7320000-c733ffff  
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500       inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255       inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>       ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)       RX packets 1547215 bytes 92862867 (88.5 MiB)       RX errors 0 dropped 6 overruns 0 frame 0       TX packets 3230 bytes 922051 (900.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 219608 bytes 105943591 (101.0 MiB)       RX errors 0 dropped 0 overruns 0 frame 0       TX packets 219608 bytes 105943591 (101.0 MiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

其中一般希望看到的信息包括:

  • inet:为IP地址
  • ether:为MAC地址
  • MTU:最大传输单元

不加任何参数只会显示已经配置并且活跃的网卡信息,如果使用ifconfig -a就可以显示全部的网卡状态了,即使有些网卡是down的状态。

亦或者指定一个interface,比如上面的eth1,则只输出这个网卡的信息,如下:$ ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500       inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255       inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>       ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)       RX packets 1547215 bytes 92862867 (88.5 MiB)       RX errors 0 dropped 6 overruns 0 frame 0       TX packets 3230 bytes 922051 (900.4 KiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

-s显示短列表

如果只想看到MTU以及数据包的状态,可以用该参数,如下:$ ifconfig -sIface     MTU   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flgeth0     1500   5665450      0      0 0        867639      0      0      0 BMRUeth1     1500   3489187217   0 101054 0      501260400     0      0      0 BMUlo       65536  219708       0      0 0        219708      0      0      0 LRU

输出信息主要包含了MTU值,发送及接收的数据情况。

配置IP地址

如下对eth0网卡配置IP地址、掩码以及广播地址,当然可以分布操作# 给eth0配置IP地址$ ifconfig eth0 192.168.1.123
# 给eth0配置IP地址和子网掩码$ ifconfig eth0 192.168.1.123 netmask 255.255.255.0
# 给eth0配置IP地址、子网掩码还有广播地址$ ifconfig eth0 192.168.1.123 netmask 255.255.255.0 broadcast 192.168.1.255

修改MTU

在某些情况下可能需要修改MTU值,比如增到到MTU为9000,如下:$ ifconfig eth1eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500       inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255       inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>       ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)       RX packets 1547215 bytes 92862867 (88.5 MiB)       RX errors 0 dropped 6 overruns 0 frame 0       TX packets 3230 bytes 922051 (900.4 KiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 修改MTU$ ifconfig eth1 MTU 9000
$ ifconfig eth1eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9000       inet 192.168.6.123 netmask 255.255.255.0 broadcast 192.168.6.255       inet6 xxxx::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>       ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)       RX packets 1547215 bytes 92862867 (88.5 MiB)       RX errors 0 dropped 6 overruns 0 frame 0       TX packets 3230 bytes 922051 (900.4 KiB)       TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

已经看到输出的信息已经把mtu更新为了9000.

这个值对网络传输影响很大。

启动关闭网卡

启动关闭主要的应用场景为重新设置了IP地址,或者暂时对某个网卡进行操作。# 关闭eth0$ ifconfig eth0 down
# 启动eth0$ ifconfig eth0 up

不过需要注意的是

  1. 很多的设置操作都需要管理员权限;
  2. 很多操作在重启后设置都会还原,如果需要永久设置,需要更改network的一些配置文件;
  3. 这个程序基本被淘汰了,已经不在更新,所有的操作或者用法均可以通过ip来搞定。等明天~。

显示进程状态 ps

ps命令是“process status”的缩写,类似于 windows 的任务管理器ps命令用于显示当前系统的进程状态。 通常搭配kill指令随时中断、删除不必要的程序。

同时呢,ps命令是非常强大的进程查看命令,可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分【Windows】任务管理器的信息都是可以通过执行该命令得到的。

语法

$ ps [参数]

常用参数

  • -A 列出所有的行程
  • -w 显示加宽可以显示较多的资讯
  • -au显示较详细的资讯
  • -aux显示所有包含其他使用者的行程

其中aux的输出信息如下所示:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的内存使用率
  • VSZ: 占用的虚拟内存大小
  • RSS: 占用的内存大小
  • TTY: 终端的minor装置号码
  • STAT: 该行程的状态:
    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 静止状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除
    • W: 没有足够的内存分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有内存分页分配并锁在内存内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

几个实例

默认情况

$ ps PID TTY         TIME CMD44965 pts/0    00:00:00 bash56519 pts/0    00:00:00 ps

什么参数都不跟的话,基本输出没啥用处。

显示所有进程

通常情况下,最常用的为把所有进程显示出来:$ ps -aux$ ps -A    

把所有进程显示出来,并输出到ps.txt文件:$ ps -aux > ps.txt

查找特定进程信息

大部分情况下,希望查找有问题的进程或者感兴趣的进程,使用管道如下:$ ps -aux | grep ssh root       1303  0.0  0.0  82468  1204 ?       Ss   Apr17   0:00 /usr/sbin/sshd root       3260  0.0  0.0  52864   572 ?       Ss   Apr17   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c “env GNOME_SHELL_SESSION_MODE=classic gnome-session –session gnome-classic” root      24188  0.0  0.0 112652   956 pts/0   S+   11:39   0:00 grep –color=auto ssh

任务管理器的 top

top命令比较像Windows里面的任务管理器,提供一个动态实时的系统状态检测,可以检测实时显示内存、CPU、进程的运行状态,主要在分析系统负载的时候比较常用。

官方定义为:

top – display Linux processes

状态默认实时显示,间隔为1秒。

使用的方法如下(选项超级多,其实不复杂):$ top -bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]

参数说明

  • -d : 改变显示的更新速度,或是在交互式( interactive command)按 sd
  • -c : 切换显示模式,共有两种模式,一是只显示执行程序的名称,另一种是显示完整的路径与名称;这个在定位执行命令的时候较常用
  • -n : 更新的次数,完成后将会退出
  • -b : 批模式操作,主要用来将 top 的结果输出到其他程序或者文件;
  • -i : 不显示任何闲置不使用CPU的进程
  • -s : 安全模式,取消交谈式指令
  • -pN1 -pN2 ... or -pN1,N2,N3 ...:指定PID模式,仅仅监控N1,N2等信息
  • -u/U user:仅仅关注user的进程情况

常规使用

在输入top命令以后,如果希望退出,可以数据q或者直接Ctrl+c即可。

还有一个情况,可以输入h进行帮助查询,用于进一步的交互操作。

通常情况下,最常用的就是输入top命令,不加任何参数,这种情况下最希望看到的就是最占用系统资源的进程。

如下所示:$ top
top – 22:23:20 up 461 days,  7:52, 18 users, load average: 1.82, 1.57, 1.45Tasks: 773 total,   1 running, 768 sleeping,   0 stopped,   4 zombie%Cpu(s): 10.1 us,  6.5 sy,  0.0 ni, 83.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem : 32664832 total,   668020 free, 15683576 used, 16313236 buff/cacheKiB Swap: 16449532 total, 13409776 free,  3039756 used. 15787188 avail Mem
PID USER     PR NI   VIRT   RES   SHR S %CPU %MEM     TIME+ COMMAND                                                                               7965 dbus      20   0   76092   8456   1704 S   7.5  0.0  40307:04 dbus-daemon                                                                                                                  23460 root      20   0  397640   5560   3248 S   4.2  0.0   4738:26 accounts-daemon                                                                       4321 user       20   0  821828 104812   4584 S   3.2  0.3   7380:28 gsd-color                                    

此时可以看到系统的基本信息,可以看到分为三个部分:

  1. 汇总信息:可以看到系统的运行状态,总的负载信息,运行总的任务,登陆的用户,CPU及内存的状态等等。
  2. Fields/Columns 头信息:用来标记接下来所有进程对应的信息
  3. Task 区域:每个运行程序的各种信息,在Fields/Columns有对应的,比如PID、用户、占用CPU、MEM及对应的命令等等。

显示完整命令

$ top -c
7965 dbus      20   0   76092   8456   1704 S   7.5  0.0  40307:04 /usr/bin/dbus-daemon  

此时省去其他信息,可以看到dbus-daemon增加了路径信息为/usr/bin/dbus-daemon

设置信息更新次数

这个命令用于定量显示,比如刷新10次后退出,如下:$ top -n 10

设置信息更新时间

如果觉得太长或者太短,可以通过-d来设置,或者在交互模式下输入d或者s来设置。$ top -d 0.8 # 设置为0.8秒
$ top -d 6 # 设置为6秒

显示指定的进程信息

如果仅仅对某个进程感兴趣,如下指定PID即可。$ top -p 1234 # 对进程1234感兴趣

指定用户的进程信息

作为管理员or朋友,或许对某个用户感兴趣,比如user,此时可以仅仅显示该用户的进程信息$ top -u user

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/390266.html

(0)
联系我们
联系我们
分享本页
返回顶部