zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    线程的补充
    线程
    进程
    操作系统和进程
    socketserver模块实现并发和连接合法性验证
    socketserver实例化过程
    粘包现象和解决方法
    网络通信协议
    初探网络
    Python网络编程
  • 原文地址:https://www.cnblogs.com/aqicheng/p/13931955.html
Copyright © 2011-2022 走看看