Linux常用命令

111 阅读13分钟

管理文件和目录的命令

  1. 改变所在目录:cd
    示例:
[root@localhost /]# cd /usr
[root@localhost usr]# cd ../
[root@localhost /]# 
  1. 查看目录下的内容:ls
    示例:
[root@localhost /]# ls
bin  boot  data  dev  etc  ftpserver  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost /]# 

-a 列举目录中的全部文件,包括隐藏文件
-l 列举目录中细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等
-f 列举的文件显示文件类型
-r 逆向,从后向前地列举目录中内容
-R 递归,该选项递归地列举当前目录下所有子目录内的内容
-s 大小,按文件大小排序
-h 以人类可读的方式显示文件的大小,如用 K、M、G 作单位
Ls -l examples.doc  列举文件 examples.doc 的所有信息
  1. 列出文件或目录详细信息: ll
    示例:
[root@localhost /]# ll
总用量 28
lrwxrwxrwx.   1 root root    7 4月   4 2018 bin -> usr/bin
dr-xr-xr-x.   4 root root 4096 6月  11 23:25 boot
drwxr-xr-x.   3 root root   16 7月   5 03:18 data
drwxr-xr-x.  20 root root 3220 11月 21 22:46 dev
drwxr-xr-x.  81 root root 8192 11月 21 22:51 etc
drwxr-xr-x.   4 root root   30 7月   5 01:52 ftpserver
drwxr-xr-x.   6 root root   50 9月  19 01:47 home
lrwxrwxrwx.   1 root root    7 4月   4 2018 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 4月   4 2018 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 8月  12 2015 media
drwxr-xr-x.   2 root root    6 8月  12 2015 mnt
drwxr-xr-x.   3 root root   19 10月 11 05:08 opt
dr-xr-xr-x. 258 root root    0 11月 21 22:45 proc
dr-xr-x---.   8 root root 4096 10月 11 05:34 root
drwxr-xr-x.  22 root root  660 11月 21 22:51 run
lrwxrwxrwx.   1 root root    8 4月   4 2018 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 8月  12 2015 srv
dr-xr-xr-x.  13 root root    0 11月 21 22:46 sys
drwxrwxrwt.   7 root root   88 11月 21 23:01 tmp
drwxr-xr-x.  13 root root 4096 4月   4 2018 usr
drwxr-xr-x.  20 root root 4096 11月 21 22:45 var
[root@localhost /]# 
  1. 显示当前目录:pwd
    示例:
[root@localhost /]# cd /usr/local/
[root@localhost local]# pwd
/usr/local
[root@localhost local]# 
  1. 创建目录: mkdir
    示例:
[root@localhost local]# cd software/
[root@localhost software]# mkdir test
[root@localhost software]# ls
test
[root@localhost software]# 
  1. 创建空文件:touch
    示例:
[root@localhost software]# touch test.txt
[root@localhost software]# ls
test  test.txt
[root@localhost software]# 
  1. 复制文件或文件夹:cp
    示例:
[root@localhost software]# cp test.txt test2.txt
[root@localhost software]# ls
test  test2.txt  test.txt
[root@localhost software]# cp -r test test2
[root@localhost software]# ls
test  test2  test2.txt  test.txt
[root@localhost software]# 

-i 互动:如果文件将覆盖目标中的文件,他会提示确认
-r 递归:这个选项会复制整个目录树、子目录以及其他
-v 详细:显示文件的复制进度
  1. 移动或重命名:mv
    示例:
[root@localhost software]# mv test.txt test/test.txt
[root@localhost software]# cd test
[root@localhost test]# ls
test.txt
[root@localhost test]# mv test.txt test2.txt
[root@localhost test]# ls
test2.txt
[root@localhost test]# 

-i 互动:如果选择的文件会覆盖目标中的文件,他会提示确认
-f 强制:它会超越互动模式,不提示地移动文件,属于很危险的选项
-v 详细:显示文件的移动进度
  1. 删除:rm
    示例:
[root@localhost test]# cd ../
[root@localhost software]# rm test2.txt
rm:是否删除普通空文件 "test2.txt"?y
[root@localhost software]# ls
test  test2
[root@localhost software]# rm -rf test
[root@localhost software]# ls
test2
[root@localhost software]# 

-i 互动:提示确认删除
-f 强制:代替互动模式,不提示确认删除
-v 详细:显示文件的删除进度
-r 递归:将删除某个目录以及其中所有的文件和子目录
  1. 查看网络参数:ifconfig
    示例:
[root@localhost ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.72.147  netmask 255.255.255.0  broadcast 192.168.72.255
        inet6 fe80::20c:29ff:fe67:28ad  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:67:28:ad  txqueuelen 1000  (Ethernet)
        RX packets 255252  bytes 360151244 (343.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 45144  bytes 4854201 (4.6 MiB)
        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 0  (Local Loopback)
        RX packets 44  bytes 3828 (3.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 44  bytes 3828 (3.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 

注:如果没有安装net-tools是不能使用ifconfig命令的 
安装命令:yum install net-tools
也可以使用ip add查看网络参数
[root@localhost ~]# ip add 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:67:28:ad brd ff:ff:ff:ff:ff:ff
    inet 192.168.72.147/24 brd 192.168.72.255 scope global dynamic eno16777736
       valid_lft 1773sec preferred_lft 1773sec
    inet6 fe80::20c:29ff:fe67:28ad/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 
  1. 显示和设置日期:date
    示例:
[root@localhost ~]# date
Thu Feb 14 16:19:34 EST 2019

这样看的话不太友好可以使日期格式化后输出
[root@localhost ~]# date "+%Y-%m-%d %H:%I:%S"
2019-02-14 16:04:59

设置日期
[root@localhost ~]# date -s "2019-03-08 14:50:40"
Fri Mar  8 14:50:40 EST 2019

  1. 查找文件:find
    示例:
[root@localhost ~]# find / -name SocketTest.java
/home/SocketTest.java

查找SocketTest开头的文件
[root@localhost ~]# find / -name SocketTest*
/home/SocketTest.java
/home/SocketTest.class

查找.java结尾的文件
[root@localhost ~]# find / -name *.java
/home/SocketTest.java
[root@localhost ~]# 
  1. 显示文件内容:cat
    示例:
[root@localhost home]# cat test.txt 
第一行
第二行
第三行
第四行
第五行
第五行
第六行

可以使用grep筛选查看文件内容中的某一行
[root@localhost home]# cat test.txt | grep '三'
第三行
[root@localhost home]# 
  1. 查看最新的文件内容:tail
    实例:
[root@localhost home]# tail -f test.txt 
第一行
第二行
第三行
第四行
第五行
第六行

说明:监视test.txt文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C

tail也可以使用grep筛选查看更新的包含指定字符串的行
[root@localhost home]# tail -f test.txt | grep '五'
第五行

说明:这样如果test.txt在刷新时有'五'这个字符的话就会显示如果没有就不显示
  1. 编辑器:vi和vim
    vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
    安装vim命令:yum install vim
    示例:
vi分为三种状态,分别是一般模式,编辑模式,命令行模式
一般模式:
在编辑模式下按【Esc】回到一般模式
可以上下左右按键来移动光标,还可以删除、复制、粘贴、剪切
删除:del
剪切:dd 
粘贴:p或P
复制:yy
复制n行:2yy	复制几行前面就写几
剪切n行:2dd	剪切几行前面就写几
移动到这个文件的最后一行:G
移动到这个文件的第一行:gg
移动到这个文件的第n行:nG(可配合:set nu命令显示行号)
光标向下移动n行:n<Enter>
移动到这一行的最前面字符处:Home
移动到这一行的最后面字符处:End
屏幕往上移动一页:Ctrl+b
屏幕往下移动一页:Ctrl+f
光标向右移动n个字符:n<space>
光标跳到下个字的开头:w(感觉没什么用ヽ(ー_ー)ノ)
光标跳到下个字的字尾:e(感觉没什么用ヽ(ー_ー)ノ)
光标移动到这个屏幕的最上方那一行的第一个字符:H
光标移动到这个屏幕的中间那一行的第一个字符:M
光标移动到这个屏幕的最下方那一行的第一个字符:L
....

编辑模式:
在一般模式下按【i, I, o, O, a, A, r, R】等任何一个字母之后才会进入编辑模式这时候屏幕的左下方会出现【INSERT或 REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下【Esc】即可退出编辑模式。
当前插入:i
从目前光标所在的第一个字符处插入:I
从目前光标所在的下一个字符处开始插入:a
从光标所在行的最后一个字符处开始插入:A
在目前光标所在的下一行处插入新的一行:o
在目前光标所在处的上一行插入新的一行:O
取代光标所在的那一个字符一次:r
一直取代光标所在的文字:R(直到按下 ESC 为止)
撤销:u

命令行模式:
在一般模式输入【: / ?】三个中的任何一个切换到命令行模式
保存编辑的内容::w
强制写入该文件::w!
离开vi::q
不想保存修改强制离开::q!
保存后离开::wq 或 :x
显示行号::set nu
取消显示行号::set nonu
将该文件编辑后的数据另存为::w 文件名称
读入另一文件内容加到光标所在行的后面::r 文件名称
跳转到指定行::行号
搜索指定内容:/搜索字符 或者 ?搜索字符 (按n到下一处)
  1. 显示磁盘使用情况:df
    示例:
[root@localhost home]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   46G  1.7G   44G   4% /
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G  8.7M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M  26% /boot
tmpfs                    379M     0  379M   0% /run/user/0
[root@localhost home]# 
  1. 查看占用:lsof
    示例:
查看该程序所占资源
[root@localhost home]# lsof -c java
COMMAND   PID USER   FD      TYPE DEVICE  SIZE/OFF      NODE NAME
java    21508 root  cwd       DIR  253,0      4096  67109051 /home
java    21508 root  rtd       DIR  253,0      4096       128 /
....
java    21508 root   12u     IPv4  47562       0t0       UDP *:9068 
[root@localhost home]#

查看该进程号所占用资源
[root@localhost home]# lsof -p 21508
COMMAND   PID USER   FD      TYPE DEVICE  SIZE/OFF      NODE NAME
java    21508 root  cwd       DIR  253,0      4096  67109051 /home
java    21508 root  rtd       DIR  253,0      4096       128 /
....
java    21508 root   12u     IPv4  47562       0t0       UDP *:9068 
[root@localhost home]#

查看某个端口占用情况
[root@localhost home]# lsof -i :9068
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    21508 root   12u  IPv4  47562      0t0  UDP *:9068 
[root@localhost home]# 
  1. 系统资源占用显示:top
    示例:
[root@localhost home]# top
top - 17:05:28 up  6:26,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 271 total,   2 running, 269 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3874956 total,  1947888 free,   604556 used,  1322512 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2970552 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                            
11615 root      20   0 5042668 365664  13516 S   0.3  9.4   0:41.52 java                                                                                                               
22727 root      20   0  146276   2188   1420 R   0.3  0.1   0:00.19 top                                                                                                                
    1 root      20   0   44488   7176   2612 S   0.0  0.2   0:03.26 systemd                                                                                                            
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.04 kthreadd                                                                                                           
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.09 ksoftirqd/0                                                                                                        
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                       
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 migration/0                                                                                                        
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                             
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0                                                                                                            
   10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1                                                                                                            
   11 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/2                                                                                                            
   12 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/3                                                                                                            
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/4                                                                                                            
   14 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/5                                                                                                            
   15 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/6                                                                                                            
   16 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/7                                                                                                            
   17 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/8                                                                                                            
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/9                                                                                                            
   19 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/10                                                                                                           
   20 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/11                                                                                                           
   21 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/12                                                                                                           
   22 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/13                                                                                                           
   23 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/14                                                                                                           
   24 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/15                                                                                                           
   25 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/16
   
只刷新3次,就停止
[root@localhost home]# top -n 3
....

说明:按Ctrl+c退出 top模式
  1. 进程查看:ps
    示例:
显示所有进程并全格式
[root@localhost home]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 10:38 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2     0  0 10:38 ?        00:00:00 [kthreadd]
root         3     2  0 10:38 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 10:38 ?        00:00:00 [kworker/0:0H]
root         7     2  0 10:38 ?        00:00:00 [migration/0]
root         8     2  0 10:38 ?        00:00:00 [rcu_bh]
root         9     2  0 10:38 ?        00:00:00 [rcuob/0]
...
root     21508     1  0 12:06 ?        00:00:21 java -jar JarTest.jar
[root@localhost home]# 

这样会很多可以使用grep进行搜索所有需要的
[root@localhost home]# ps -ef|grep java
root     11615     1  0 11:10 ?        00:00:42 java -jar monitor-tuning-1.0-SNAPSHOT.jar
root     21508     1  0 12:06 ?        00:00:21 java -jar JarTest.jar
root     22764 22292  0 17:18 pts/0    00:00:00 grep --color=auto java
[root@localhost home]# 

可以根据CPU使用进行升序排序
[root@localhost home]# ps -aux --sort -pcpu | less
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     11615  0.1  9.4 5042668 365664 ?      Sl   11:10   0:42 java -jar monitor-tuning-1.0-SNAPSHOT.jar
root     21508  0.1  2.4 4443904 96572 ?       Sl   12:06   0:21 java -jar JarTest.jar
root         1  0.0  0.1  44488  7176 ?        Ss   10:38   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
...
[root@localhost home]# 
按q退出

可以根据内存使用进行升序排序
[root@localhost home]# ps -aux --sort -pmem | less
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     11615  0.1  9.4 5042668 365664 ?      Sl   11:10   0:42 java -jar monitor-tuning-1.0-SNAPSHOT.jar
root     21508  0.1  2.4 4443904 96572 ?       Sl   12:06   0:21 java -jar JarTest.jar
root       839  0.0  0.6 323576 23260 ?        Ssl  10:39   0:00 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
...
[root@localhost home]#