Linux 运维人员最常用 150 个命令汇总

命令

功能说明

线上查询及帮助命令 (2 个)

man

查看命令帮助,命令的词典,更复杂的还有 info,但不常用。

help

查看 Linux 内置命令的帮助,比如 cd 命令。

文件和目录操作命令 (18 个)

ls

全拼 list,功能是列出目录的内容及其内容属性信息。

cd

全拼 change directory,功能是从当前工作目录切换到指定的工作目录。

cp

全拼 copy,其功能为复制文件或目录。

find

查找的意思,用于查找目录及目录下的文件。

mkdir

全拼 make directories,其功能是创建目录。

mv

全拼 move,其功能是移动或重命名文件。

pwd

全拼 print working directory,其功能是显示当前工作目录的绝对路径。

rename

用于重命名文件。

rm

全拼 remove,其功能是删除一个或多个文件或目录。

rmdir

全拼 remove empty directories,功能是删除空目录。

touch

创建新的空文件,改变已有文件的时间戳属性。

tree

功能是以树形结构显示目录下的内容。

basename

显示文件名或目录名。

dirname

显示文件或目录路径。

chattr

改变文件的扩展属性。

lsattr

查看文件扩展属性。

file

显示文件的类型。

md5sum

计算和校验文件的 MD5 值。

查看文件及内容处理命令(21 个)

cat

全拼 concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。

tac

tac 是 cat 的反向拼写,因此命令的功能为反向显示文件内容。

more

分页显示文件内容。

less

分页显示文件内容,more 命令的相反用法。

head

显示文件内容的头部。

tail

显示文件内容的尾部。

cut

将文件的每一行按指定分隔符分割并输出。

split

分割文件为不同的小片段。

paste

按行合并文件内容。

sort

对文件的文本内容排序。

uniq

去除重复行。oldboy

wc

统计文件的行数、单词数或字节数。

iconv

转换文件的编码格式。

dos2unix

将 DOS 格式文件转换成 UNIX 格式。

diff

全拼 difference,比较文件的差异,常用于文本文件。

vimdiff

命令行可视化文件比较工具,常用于文本文件。

rev

反向输出文件内容。

grep/egrep

过滤字符串,三剑客老三。

join

按两个文件的相同字段合并。

tr

替换或删除字符。

vi/vim

命令行文本编辑器。

文件压缩及解压缩命令(4 个)

tar

打包压缩。oldboy

unzip

解压文件。

gzip

gzip 压缩工具。

zip

压缩工具。

信息显示命令(11 个)

uname

显示操作系统相关信息的命令。

hostname

显示或者设置当前系统的主机名。

dmesg

显示开机信息,用于诊断系统故障。

uptime

显示系统运行时间及负载。

stat

显示文件或文件系统的状态。

du

计算磁盘空间使用情况。

df

报告文件系统磁盘空间的使用情况。

top

实时显示系统资源使用情况。

free

查看系统内存。

date

显示与设置系统时间。

cal

查看日历等时间信息。

搜索文件命令(4 个)

which

查找二进制命令,按环境变量 PATH 路径查找。

find

从磁盘遍历查找文件或目录。

whereis

查找二进制命令,按环境变量 PATH 路径查找。

locate

从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。

用户管理命令(10 个)

useradd

添加用户。

usermod

修改系统已经存在的用户属性。

userdel

删除用户。

groupadd

添加用户组。

passwd

修改用户密码。

chage

修改用户密码有效期限。

id

查看用户的 uid,gid 及归属的用户组。

su

切换用户身份。

visudo

编辑 / etc/sudoers 文件的专属命令。

sudo

以另外一个用户身份(默认 root 用户)执行事先在 sudoers 文件允许的命令。

基础网络操作命令(11 个)

telnet

使用 TELNET 协议远程登录。

ssh

使用 SSH 加密协议远程登录。

scp

全拼 secure copy,用于不同主机之间复制文件。

wget

命令行下载文件。

ping

测试主机之间网络的连通性。

route

显示和设置 linux 系统的路由表。

ifconfig

查看、配置、启用或禁用网络接口的命令。

ifup

启动网卡。

ifdown

关闭网卡。

netstat

查看网络状态。

ss

查看网络状态。

深入网络操作命令(9 个)

nmap

网络扫描命令。

lsof

全名 list open files,也就是列举系统中已经被打开的文件。

mail

发送和接收邮件。

mutt

邮件管理命令。

nslookup

交互式查询互联网 DNS 服务器的命令。

dig

查找 DNS 解析过程。

host

查询 DNS 的命令。

traceroute

追踪数据传输路由状况。

tcpdump

命令行的抓包工具。

有关磁盘与文件系统的命令(16 个)

mount

挂载文件系统。

umount

卸载文件系统。

fsck

检查并修复 Linux 文件系统。

dd

转换或复制文件。

dumpe2fs

导出 ext2/ext3/ext4 文件系统信息。

dump

ext2/3/4 文件系统备份工具。

fdisk

磁盘分区命令,适用于 2TB 以下磁盘分区。

parted

磁盘分区命令,没有磁盘大小限制,常用于 2TB 以下磁盘分区。

mkfs

格式化创建 Linux 文件系统。

partprobe

更新内核的硬盘分区表信息。

e2fsck

检查 ext2/ext3/ext4 类型文件系统。

mkswap

创建 Linux 交换分区。

swapon

启用交换分区。

swapoff

关闭交换分区。

sync

将内存缓冲区内的数据写入磁盘。

resize2fs

调整 ext2/ext3/ext4 文件系统大小。

系统权限及用户授权相关命令(4 个)

chmod

改变文件或目录权限。

chown

改变文件或目录的属主和属组。

chgrp

更改文件用户组。

umask

显示或设置权限掩码。

查看系统用户登陆信息的命令(7 个)

whoami

显示当前有效的用户名称,相当于执行 id -un 命令。

who

显示目前登录系统的用户信息。

w

显示已经登陆系统的用户列表,并显示用户正在执行的指令。

last

显示登入系统的用户。

lastlog

显示系统中所有用户最近一次登录信息。

users

显示当前登录系统的所有用户的用户列表。

finger

查找并显示用户信息。

内置命令及其它(19 个)

echo

打印变量,或直接输出指定的字符串

printf

将结果格式化输出到标准输出。

rpm

管理 rpm 包的命令。

yum

自动化简单化地管理 rpm 包的命令。

watch

周期性的执行给定的命令,并将命令的输出以全屏方式显示。

alias

设置系统别名。

unalias

取消系统别名。

date

查看或设置系统时间。

clear

清除屏幕,简称清屏。

history

查看命令执行的历史纪录。

eject

弹出光驱。

time

计算命令执行时间。

nc

功能强大的网络工具。

xargs

将标准输入转换成命令行参数。

exec

调用并执行指令的命令。

export

设置或者显示环境变量。

unset

删除变量或函数。

type

用于判断另外一个命令是否是内置命令。

bc

命令行科学计算器

系统管理与性能监视命令 (9 个)

chkconfig

管理 Linux 系统开机启动项。

vmstat

虚拟内存统计。

mpstat

显示各个可用 CPU 的状态统计。

iostat

统计系统 IO。

sar

全面地获取系统的 CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU 中断和网络等性能数据。

ipcs

用于报告 Linux 中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。

ipcrm

用来删除一个或更多的消息队列、信号量集或者共享内存标识。

strace

用于诊断、调试 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

ltrace

命令会跟踪进程的库函数调用, 它会显现出哪个库函数被调用。

关机 / 重启 / 注销和查看系统信息的命令(6 个)

shutdown

关机。

halt

关机。

poweroff

关闭电源。

logout

退出当前登录的 Shell。

exit

退出当前登录的 Shell。

Ctrl+d

退出当前登录的 Shell 的快捷键。

进程管理相关命令(15 个)

bg

将一个在后台暂停的命令,变成继续执行  (在后台执行)。

fg

将后台中的命令调至前台继续运行。

jobs

查看当前有多少在后台运行的命令。

kill

终止进程。

killall

通过进程名终止进程。

pkill

通过进程名终止进程。

crontab

定时任务命令。

ps

显示进程的快照。

pstree

树形显示进程。

nice/renice

调整程序运行的优先级。

nohup

忽略挂起信号运行指定的命令。

pgrep

查找匹配条件的进程。

runlevel

查看系统当前运行级别。

init

切换运行级别。

service

启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

十个你不知道的 Linux 命令大盘点

1)pgrep

pgrep 名字前有个 p,我们可以猜到这和进程相关,又是 grep,当然这是进程相关的 grep 命令。不过,这个命令主要是用来列举进程 ID 的。如:

  1. $ pgrep -u hchen

  2. 22441

  3. 22444

这个命令相当于:

  1. 1 ps -ef | egrep '^hchen' | awk '{print $2}'

2)pstree

这个命令可以以树形的方式列出进程。如下所示:

  1. [hchen@RHELSVR5 ~]$ pstree

  2. init-+-acpid

  3. |-auditd-+-python

  4. | `-{auditd}

  5. |-automount---4*[{automount}]

  6. |-backup.sh---sleep

  7. |-dbus-daemon

  8. |-events/0

  9. |-events/1

  10. |-hald---hald-runner---hald-addon-acpi

  11. |-httpd---10*[httpd]

  12. |-irqbalance

  13. |-khelper

  14. |-klogd

  15. |-ksoftirqd/0

  16. |-ksoftirqd/1

  17. |-kthread-+-aio/0

  18. |-aio/1

  19. |-ata/0

  20. |-ata/1

  21. |-ata_aux

  22. |-cqueue/0

  23. |-cqueue/1

  24. |-kacpid

  25. |-kauditd

  26. |-kblockd/0

  27. |-kblockd/1

  28. |-kedac

  29. |-khubd

  30. |-6*[kjournald]

  31. |-kmirrord

  32. |-kpsmoused

  33. |-kseriod

  34. |-kswapd0

  35. |-2*[pdflush]

  36. |-scsi_eh_0

  37. |-scsi_eh_1

  38. |-xenbus

  39. | `-xenwatch

  40. |-migration/0

  41. |-migration/1

  42. |-6*[mingetty]

  43. |-3*[multilog]

  44. |-mysqld_safe---mysqld---9*[{mysqld}]

  45. |-smartd

  46. |-sshd---sshd---sshd---bash---pstree

  47. |-svscanboot---svscan-+-3*[supervise---run]

  48. |-supervise---qmail-send-+-qmail-clean

  49. |-qmail-lspawn

  50. | `-qmail-rspawn

  51. | `-2*[supervise---tcpserver]

  52. |-syslogd

  53. |-udevd

  54. |-watchdog/0

  55. |-watchdog/1

  56. -xinetd

3)bc

这个命令主要是做一个精度比较高的数学运算的。比如开平方根等。下面是一个我们利用 bc 命令写的一个脚本(文件名:sqrt)

  1. #!/bin/bash

  2. if [ $# -ne 1 ]

  3. then

  4. echo 'Usage: sqrt number'

  5. exit1

  6. else

  7. echo -e "sqrt($1) quit " | bc -q -i

  8. fi

于是,我们可以这样使用这个脚本进行平方根运算:

  1. [hchen@RHELSVR5]$ ./sqrt 36

  2. [hchen@RHELSVR5]$ ./sqrt 2.0000

  3. 1.4142

  4. [hchen@RHELSVR5]$ ./sqrt 10.0000

4)split

如果你有一个很大的文件,你想把其分割成一些小的文件,那么这个命令就是干这件事的了。

  1. [hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz

  2. -rw-r--r-- 1 hchen hchen 43677477404-1702:00 largefile.tar.gz

  3. [hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_

  4. [hchen@RHELSVR5]# ls -l LF_*

  5. -rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_aa

  6. -rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ab

  7. -rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ac

  8. -rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ad

  9. -rw-r--r-- 1 hchen hchen 5242880005-1018:34 LF_ae

  10. -rw-r--r-- 1 hchen hchen 5242880005-1018:35 LF_af

  11. -rw-r--r-- 1 hchen hchen 5242880005-1018:35 LF_ag

  12. -rw-r--r-- 1 hchen hchen 5242880005-1018:35 LF_ah

  13. -rw-r--r-- 1 hchen hchen 1734437405-1018:35 LF_ai

文件合并只需要使用简单的合并就行了,如:

  1. 1 [hchen@RHELSVR5]# cat LF_* >largefile.tar.gz

5)nl

nl 命令其它和 cat 命令很像,只不过它会打上行号。如下所示:

  1. [hchen@RHELSVR5 include]# nl stdio.h | head -n 10

  2. 1/* Define ISO C stdio on top of C++ iostreams.

  3. 2 Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc.

  4. 3 This file is part of the GNU C Library.

  5. 4 The GNU C Library is free software; you can redistribute it and/or

  6. 5 modify it under the terms of the GNU Lesser General Public

  7. 6 License as published by the Free Software Foundation; either

  8. 7 version 2.1 of the License, or (at your option) any later version.

  9. 8 The GNU C Library is distributed in the hope that it will be useful,

6)mkfifo

熟悉 Unix 的人都应该知道这个是一个创建有名管道的系统调用或命令。平时,我们在命令行上使用竖线 “|” 把命令串起来是使用无命管道。而我们使用 mkfifo 则使用的是有名管道。下面是示例:

下面是创建一个有名管道:

  1. [hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe

  2. [hchen@RHELSVR5 ~]# ls -l /tmp

  3. prw-rw-r-- 1 hchen hchen 005-1018:58 hchenpipe

然后,我们在一个 shell 中运行如下命令,这个命令不会返回,除非有人从这个有名管道中把信息读走。

  1. [hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe

我们在另一个命令窗口中读取这个管道中的信息:(其会导致上一个命令返回)

  1. 01 [hchen@RHELSVR5 ~]# head /tmp/hchenpipe

  2. 02 drwx------ 8 hchen hchen 409605-1018:27 .

  3. 03 drwxr-xr-x 7 root root 409603-0500:06 ..

  4. 04 drwxr-xr-x 3 hchen hchen 409603-0118:13 backup

  5. 05 -rw------- 1 hchen hchen 72105-0522:12 .bash_history

  6. 06 -rw-r--r-- 1 hchen hchen 2402-2822:20 .bash_logout

  7. 07 -rw-r--r-- 1 hchen hchen 17602-2822:20 .bash_profile

  8. 08 -rw-r--r-- 1 hchen hchen 12402-2822:20 .bashrc

  9. 09 -rw-r--r-- 1 root root 1400203-0700:29 index.htm

  10. 10 -rw-r--r-- 1 hchen hchen 3146503-0123:48 index.php

7)ldd

这个命令可以知道你的一个可执行文件所使用了动态链接库。如:

  1. 01 [hchen@RHELSVR5 ~]# ldd /usr/bin/java

  2. 02 linux-gate.so.1 => (0x00cd9000)

  3. 03 libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)

  4. 04 libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)

  5. 05 libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)

  6. 06 librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)

  7. 07 libdl.so.2 => /lib/libdl.so.2 (0x008b5000)

  8. 08 libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)

  9. 09 libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)

  10. 10 libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)

  11. 11 libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)

  12. 12 /lib/ld-linux.so.2 (0x00214000)

8)col

这个命令可以让你把 man 文件转成纯文本文件。如下示例:

  1. # PAGER=cat  

  2. # man less | col -b > less.txt  

9)xmlwf

这个命令可以让你检查一下一个 XML 文档是否是所有的 tag 都是正常的。如:

  1. 1 [hchen@RHELSVR5 ~]# curl 'http://coolshell.cn/?feed=rss2' > cocre.xml

  2. 2 % Total % Received % XferdAverageSpeedTimeTimeTimeCurrent

  3. 3DloadUploadTotalSpentLeftSpeed

  4. 41006488206488200864550 --:--:-- --:--:-- --:--:-- 2073k

  5. 5 [hchen@RHELSVR5 ~]# xmlwf cocre.xml

  6. 6 [hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml

  7. 7 [hchen@RHELSVR5 ~]# xmlwf cocre.xml

  8. 8 cocre.xml:13:23: mismatched tag

10)lsof

可以列出打开了的文件。

  1. 01 [root@RHELSVR5 ~]# lsof | grep TCP

  2. 02 httpd 548 apache 4uIPv614300967 TCP *:http (LISTEN)

  3. 03 httpd 548 apache 6uIPv614300972 TCP *:https (LISTEN)

  4. 04 httpd 561 apache 4uIPv614300967 TCP *:http (LISTEN)

  5. 05 httpd 561 apache 6uIPv614300972 TCP *:https (LISTEN)

  6. 06 sshd 1764 root 3uIPv64993 TCP *:ssh (LISTEN)

  7. 07 tcpserver 8965 root 3uIPv4153795500 TCP *:pop3 (LISTEN)

  8. 08 mysqld 10202 mysql 10uIPv473819697 TCP *:mysql (LISTEN)

  9. 09 sshd 10735 root 3uIPv6160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)

  10. 10 sshd 10767 hchen 3uIPv6160731956 TCP 210.51.0.232:ssh->123.117.239.68:31810 (ESTABLISHED)

  11. 11 vsftpd 11095 root 3uIPv4152157957 TCP *:ftp (LISTEN)

原文地址:https://www.cnblogs.com/aqicheng/p/13931955.html