Linux服务器运维常用命令

概述

这篇文章介绍了 linux 服务器维护中常用的一些命令。

基础命令

cd(切换目录)

1
cd 目录

cd ,命令用于切换目录,参数可是相对路径或绝对路径。

常用示例:

  • 切换到当前目录下的xxx目录:cd xxxcd ./xxx
  • 切换到home目录:cd ~
  • 切换到上一个目录:cd -
  • 切换到根目录:cd /
  • 切换到上一层目录:cd ..cd ../

ls(显示目录中的文件)

ls,“list” 显示目录中的文件。

常用命令选项:

  • -l 列表方式显示,可以显示文件的操作权限、归属组、归属用户、文件大小、修改时间

  • -a 显示所有文件,包括隐藏文件(文件名以 . 开头的隐藏文件),如当前目录 .、上级目录 ..、隐藏的 git 目录 .git

  • -h 以方便人类阅读的单位输出文件大小,如使用 ls -lh 查看当前目录文件时,文件大小超过 1K 但未达到 1M 的将以 K 为单位显示,超过 1M 但未达到 1G 的将以 M 为单位显示。

pwd(显示当前所在目录)

pwd 命令用于显示当前所在目录的绝对路径。

mkdir(创建目录)

mkdir 命令用于创建目录,可添加 -p 选项创建多层目录。

常用示例:

  • 创建目录 test :mkdir test ,如果 test 目录已经存在,执行出错
  • 创建多层目录 abc/def :mkdir -p abc/def ,如果 abc 目录不存在将创建它并在其中创建 def目录;如果目录存在,并不会执行出错

rmdir(删除目录)

rmdir 命令用于删除目录,注意只有目录为空时才能删除,否则将会报错。可以添加 -p 选项删除多层目录。

常用示例:

  • 删除目录 test: rmdir test
  • 删除多层目录 abc/def : rmdir -p abc/def ,相当于执行命令 rmdir abc/def abc

touch(创建文件)

touch 命令可用于创建空文件(当参数指定的文件不存在时)或更新文件的访问时间和更新时间。

常用示例:

  • 创建文件 abc.txt :touch abc.txt ,注意:指定命令前 abc.txt 文件不存在

  • 更新文件 abc.txt 的访问时间和更新时间:touch abc.txt

rm(删除文件)

rm 命令用于删除文件,删除文件时会询问是否确认删除。常用选项 -f 强制删除(不再询问),-r 递归删除(删除目录及目录中的内容)。

  • 删除文件 test.txt :rm test.txt
  • 删除目录 test 及其中所有内容:rm -rf test

data(查看和修改日期时间)

data 命令用于显示日期时间,可添加参数输出格式化的时间。

常用示例:

  • 打印当前时间:data ,输出结果:

    1
    Fri Sep 30 21:45:28 CST 2022
  • 按格式输出年月日:date +%Y/%m/%d ,结果:

    1
    2022/09/30
  • 按格式输出时间:date +%H:%M ,结果:

    1
    21:45

cal(显示日历)

cal ,日历(calendar)命令用于显示日历,不带参数时显示本月日历,日期当天回反白显示。可指定参数 月 和 年,以显示指定年月的日历。

常用示例:

  • 显示当月日历:cal

  • 显示 2022 年 10 月的日历:cal 10 2022,结果如下:

    1
    2
    3
    4
    5
    6
    7
    8
        October 2022
    Su Mo Tu We Th Fr Sa
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31

关机与重启

shutdownreboothaltpoweroff 都需要管理员权限,这几个命令配合命令的选项,均可达到关机、停止系统和重启系统的功能,可以根据个人习惯使用其中一个。不过,语义化的命令更便于记忆。

reboothaltpoweroff 命令实际上都是调用 systemctl 完成关机相关操作,使用 --help 选项查看帮助信息,发现这三个命令的参数选项都是一样的。

shutdown(关机)

1
shutdown [-krhc] [时间] [警告信息]

命令选项:

  • -k 仅给用户发送警告信息,不真的关机
  • -r 在将系统服务停止后重启(常用)
  • -h 在系统服务停止后立即关机(常用)
  • -c 取消已在进行的 shutdown 命令内容,临时改变主意不想关机时,可以执行命令 shutdown -c

命令参数:

  • 时间:即执行命令的时间,单位:分钟。如果不指定,默认为 1分钟。
  • 警告信息:执行 shutdown 命令后,将立即将警告信息发给所有正在使用的用户

常用示例:

  • 立即关机:shutdown -h now
  • 指定时间关机, 22时30分时关机:shutdown -h 22:30
  • 十分钟后关机:shutdown -h +10
  • 立即重启:shutdown -r now
  • 30分钟后关机,并发送警告信息给所有在线使用者:shutdown -r +30 'System will reboot after 30 minutes'
  • 仅发送警告信息,吓吓人:shutdown -k now 'This system will shutdown'

reboot(重启)

重启系统。

命令选项:

  • --halt 停止系统
  • -p--poweroff 关机
  • --reboot 重启系统
  • -f--force 强制执行
  • -w--wtmp-only 不执行停止、关机、重启命令,仅写入 wtmp 记录
  • -d--no-wtmp 不写入 wtmp 记录
  • --no-wall 不发送消息

halt(系统停止)

halt 命令需要管理员权限才能执行,作用是将数据写入磁盘并停止处理器运行,机器不重新启动。屏幕上可能会保留一些信息。

命令选项:同上

poweroff(关机)

关机。

命令选项:同上

sync(数据同步写入磁盘)

sync 命令用于将内存中的数据写入磁盘,防止文件数据异常。在关机或重启前,可以执行这个命令保证内存中的数据写入磁盘。管理员可同步所有数据,非管理员用户仅同步自己的数据。

systemctl(系统管理工具)

systemctl 是一个强大的系统管理工具,与关机相关的命令:

  • systemctl halt 进入系统停止模式,屏幕上可能会保留一些信息,与电脑的电源管理模式有关
  • systemctl poweroff 进入系统关机模式,直接关机
  • systemctl reboot 直接重新启动
  • systemctl suspend 进入休眠模式

用户管理

su(切换用户)

1
su [username]

注:[] 表示参数可选

su 命令用于切换到指定用户,切换后可执行命令 exit 返回原用户。如果不带用户名参数,则切换到 root 用户。常用于普通用户切换到管理员用户执行一些需要管理员权限的命令。

useradd(添加用户)

1
useradd 用户名

useradd 命令用于添加一个用户,添加成功后,将在 /home 目录下建立一个用户目录作为该用户的主目录。

命令可选参数:

  • -d 指定用户目录
  • -m 指定权限
  • -g 指定组号

添加完用户后,一般需要使用 passwd 命令设定用户的密码,用户密码保存在 /etc/passwd 文件中。

passwd(修改密码)

1
passwd [用户名]

修改指定用户的密码,只有管理员可以带用户名参数;普通用户只能使用不带参数的 passwd 命令来修改自身的密码。

系统管理

lsb_release/uname(查看系统信息)

lsb_release 命令用于查看系统发行版信息及 LSB (Linux Standard Base) 信息,适用于所有 linux 版本。uname 命令用于查看系统信息,如查看 linux 内核版本、物理架构等。

常用示例:

  • 打印系统信息:lsb_release -a ,输出结果如下:

    1
    2
    3
    4
    5
    LSB Version:    n/a
    Distributor ID: HuaweiCloudEulerOS
    Description: Huawei Cloud EulerOS release 1.0 (x86_64)
    Release: 1.0
    Codename: x86_64
  • 打印系统信息:uname -a ,输出结果如下

    1
    Linux hecs-165974 4.19.90-vhulk2107.1.0.h699.hcev1.x86_64 #1 SMP Sat Jul 31 09:58:46 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • 打印内核版本:uname -r

ps(查看进程)

常用形式:

1
2
ps -aux
ps -ef

ps 命令用于查看当前的系统进程,结果不是动态连续的,如果需要实时监控进程,应使用 top 命令。

命令的结果:

  • USER 进程的属主
  • PID 进程的 ID
  • PPID 父进程
  • %CPU 进程占用的CPU百分比
  • %MEM 占用内存的百分比
  • NI 进程的 NICE 值,数值大,表示占用 CPU 时间较少
  • VSZ 进程的虚拟大小
  • RSS 驻留中页的数量
  • TTY 终端 ID
  • WCHAN 正在等待的进程资源
  • stat 进程状态:R(运行)、S(休眠)、Z(僵尸)、T(停止或被追踪)、X(死掉的进程)、N(优先级较低的进程)、<(优先级高的进程)、W(进入内存交换)、D(非中断休眠(常驻IO))
  • START 进程启动的时间
  • COMMAND 命令的名称和参数

top(查看进程)

1
top

top 命令用于查看系统中占用资源较多的一些进程,默认按 CPU 占用率排序。

kill(结束进程)

1
kill -9 进程ID

kill 命令用于结束指定 PID 的进程,执行命令后将会向指定进程发送 SIGKILL 信号,其中 -9 表示强制终止,可以省略。

注:进程的 PID 号可使用 ps 命令查询获取。

fdisk(磁盘管理工具)

fdisk 是一个磁盘分区管理工具,可用于查看磁盘分区信息和对磁盘分区进行管理,如添加、删除分区。

用法示例:

  • 打印磁盘使用情况:fdisk -l

free(查看内存)

free 命令用于打印系统内存使用情况。

用法示例:

  • 打印内存使用情况: free -h ,结果如下:

    1
    2
    3
    4
                  total        used        free      shared  buff/cache   available
    Mem: 1.4Gi 205Mi 114Mi 83Mi 1.1Gi 1.0Gi
    Swap: 0B 0B 0B

netstat(查看网络状态)

netstat 命令用于打印网络连接、路由表、网络统计等信息。

常用选项:

  • -a 显示所有socket,包括正在监听的
  • -n 以数字形式显示地址和端口号
  • -r 显示核心路由表
  • -f 显示外部地址的完全限定域名(FQDN)
  • -t 显示当前连接卸载状态
  • -v 显示正在进行的工作
  • -p proto 显示proto指定的协议的连接
  • -b 显示在创建每个连接或侦听端口时涉及的可执行程序
  • -e 显示以太网统计,此选项可以和 -s 结合使用
  • -o 显示拥有的与每个连接关联的进程PID
  • -q 显示所有连接、侦听端口和绑定的非侦听 TCP端口
  • -s 显示每个协议的统计
  • -x 显示 NetworkDirect 连接、侦听器和共享端点
  • -y 显示所有连接的 TCP 连接模板,无法与其他选项联用

常用示例:

  • 查看 8080 端口占用情况: netstat -ano | grep 8080

工具

od(查看二进制文件)

od 命令用于读取文件内容,以八进制方式打印输出,可搭配选项输出为指定格式,如十六进制、ASCII等。

常用示例:

  • 以ASCII编码方式输出文件 test.txt 的内容: od -c test.txt

  • 以十六进制方式输出文件 test.txt 的内容:od -x test.txt

  • 同时以ASCII和十六进制方式输出 test.txt 的内容:od -cx test.txt ,文件内容为 abcde 12345 ,输出结果如下:

    1
    2
    3
    0000000   a   b   c   d   e       1   2   3   4   5  \n
    6261 6463 2065 3231 3433 0a35
    0000014