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

发布时间:2024年01月10日

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地址【需要管理员权限】

默认无参数使用

如果不指定任何参数,直接显示当前活动的接口,如下:

$ ifconfig
eth0: 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 -s
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0     1500   5665450      0      0 0        867639      0      0      0 BMRU
eth1     1500   3489187217   0 101054 0      501260400     0      0      0 BMU
lo       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 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

# 修改MTU
$ ifconfig eth1 MTU 9000

$ ifconfig eth1
eth1: 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 CMD
44965 pts/0    00:00:00 bash
56519 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.45
Tasks: 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 st
KiB Mem : 32664832 total,   668020 free, 15683576 used, 16313236 buff/cache
KiB 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

更多信息

Hi,XDJM们,更多信息欢迎移步我的主页CSDN或微信公众号letsProgramming.

  • 🐱 github
  • 🏠 Homepage https://shaoguangleo.github.io
  • CSDN CSDN http://blog.csdn.net/shaoguangleo
  • 微信公众号:letsProgramming

微信公众号

文章来源:https://blog.csdn.net/shaoguangleo/article/details/135513300
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。