backTop

Linux 常用命令

  • 文件: Everything is file
  • 进程: 文件的运行时态
  • 网络: 特殊的文件

文件

在Linux中所有的内容都是以文件的形式来进行抽象的,如进程、网络、硬件等,都可以抽象成文件,对其进行IO操作

相关命令

查看命令的详细信息,可以使用 man 或者 --help
例如: man ls or ls --help
man的信息更全, --help显示的是主要信息

处理目录常见命令

  • ls(英文全拼:list files): 列出目录及文件名 (以"."开头的文件为隐藏档案, 不会列出)
    语法 ls [-alrtAFR] [name...]
    • -a 显示所有文件及目录
    • -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
    • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
    • -r 反序列出
    • -t 按文档建立时间列出, 最新文件在前
    • -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
    • -R 列出目录及子目录下所有文件
    • -i, --inode 打印索引节点(inode --> index node)信息
    • 硬链接: ln 原始档 链接档 (inode一样, 删除原始档后,链接档独立存在)
    • 软链接: ln -s 原始档 链接档 (相当于快捷方式, inode 不一样,删除原始档后,链接档 No such file or directory)
      • 修改原始档,硬链接档,软链接档 中任何一个的内容, 其他文件跟着改变 (软链接指向的原始档的路径, 硬链接和原始档的索引节点相同)
  • cd(英文全拼:change directory):切换目录
  • pwd(英文全拼:print work direcytory):显示目前的目录
  • mkdir(英文全拼:make directory):创建一个新的目录
  • rmdir(英文全拼:remove directory):删除一个空的目录 (删除非空目录使用 rm -r)
  • cp(英文全拼:copy file): 复制文件或目录
  • rm(英文全拼:remove): 移除文件或目录 (-f 强制 , -i 询问 , -r 递归删除目录及其内容)
  • mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

1. df

(英文全拼 disk free)
显示文件系统磁盘的使用情况统计 第二列为 1K-blocks

  • df -h 大小显示为 G M K ,第二列为 size , 更易阅读

2. pwd

(英文全拼:print work directory)
显示当前工作目录的绝对路径

3. chmod

(英文全拼:change mode)
控制用户对文件的权限
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。

只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。

语法

chmod [-cfvR] [--help] [--version] mode file...
  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
  • --help : 显示辅助说明
  • --version : 显示版本

mode 为权限设定字符串 格式如下

[ugoa...][[+-=][rwxX]...][,...]
  • u (user)文件所有者,g (group) 文件所有者所在组,o (others) 所有其他用户,a (all) 所有用户, 相当于 ugo
  • +表示增加权限、- 表示去除权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
    chmod 777 filename #修改filename文件权限为 rwxrwxrwx 所有用户可写可读可执行
    等效 chmod a+rwx filename / chmod ugo+rwx
    chmod ugo+w filename #将filename文件设置为所有人都可写入

文件内容查看

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行
    tail -f filename 循环读取filename最后几行,动态查看 (使用vim,sed等编辑后无法追踪)
    tail -F filename 根据文件名追踪

查找文件内容

grep

查找文件里符合条件的字符串 (可用正则表达式)
grep "被查找的字符串" 文件名

以递归的方式查找符合条件的文件(在指定目录及其子目录下查找符合条件的文件,并打印内容)
grep -r "被查找的字符串" "目录/文件"

反向查找

grep -v test *test*
查找文件名中包含 test 的文件中不包含test 的行

参数

-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。

查找文件

find

在指定目录下查找文件
find *.py
查找当前路径下拓展名为py的文件 也可用 ls *.py

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出

# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出

# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

awk

sed

创建新文件

  1. cat>>newfile (输入内容,按Ctrl D 保存退出)
  2. touch newfile (创建一个新的空文件)
  3. vi/vim newfile (保存退出 :wq; 或者:w newfile :q)

进程

linux进程的5种基本状态:

  1. R (Running) 运行(正在运行或在运行队列中等待)
  2. S (Sleeping) 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. D (TASK_UNINTERRUPTIBLE) 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. Z (TASK_DEAD - EXIT_ZOMBIE) 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. T (Stopped) 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

相关命令:

ps

 ps -ef 查看进程

 ps aux 显示所有进程详细信息

 ps -ef --sort=pid 使用--sort=xxx 排序 ; --sort=-xxx 逆序

 ps aux|grep init 查找进程

参数

top

实时显示 process 的动态
top -p 139 实时显示进程号pid为139的进程信息,CPU、内存占用率等

网络

netstat

显示网络状态

usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [<Socket> ...]
       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }

        -r, --route              display routing table
        -i, --interfaces         display interface table
        -g, --groups             display multicast group memberships
        -s, --statistics         display networking statistics (like SNMP)
        -M, --masquerade         display masqueraded connections

        -v, --verbose            be verbose
        -W, --wide               don't truncate IP addresses
        -n, --numeric            don't resolve names
        --numeric-hosts          don't resolve host names
        --numeric-ports          don't resolve port names
        --numeric-users          don't resolve user names
        -N, --symbolic           resolve hardware names
        -e, --extend             display other/more information
        -p, --programs           display PID/Program name for sockets
        -o, --timers             display timers
        -c, --continuous         continuous listing

        -l, --listening          display listening server sockets
        -a, --all                display all sockets (default: connected)
        -F, --fib                display Forwarding Information Base (default)
        -C, --cache              display routing cache instead of FIB
        -Z, --context            display SELinux security context for sockets

  <Socket>={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
           {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
  List of possible address families (which support routing):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
    x25 (CCITT X.25)

netstat -a 显示详细的网络状况
netstat -tlnp 查看 TCP 协议进程端口,-t 指的是 TCP 协议; -l (listening)显示监听服务器套接字;-n 指不需要解析远程服务器的名字,加快速度;-p 显示进程名

netstat -tln | grep 8080 查看端口8080的使用情况

lsof -i :8080 查看端口属于哪个程序

ifconfig

显示或设置网络

远程命令

ssh
scp

tar 压缩解压

touch 1.txt    
# 新建空白文件 1.txt

tar -czvf 1.tar.gz 1.txt
# 压缩 1.txt 文件为 1.txt
# 参数说明 
-c或--create 建立新的备份文件
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-v或--verbose 显示指令执行过程
-f<备份文件>或--file=<备份文件> 指定备份文件

tar -tzvf 1.tar.gz
# 列出 1.tar.gz 里的文件
# 参数说明 
-t或--list 列出备份文件的内容
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-v或--verbose 显示指令执行过程
-f<备份文件>或--file=<备份文件> 指定备份文件

tar -xzvf 1.tar.gz
# 解压文件 1.tar.gz 中的文件到当前路径  
# 参数说明 
-x或--extract或--get 从备份文件中还原文件
-z或--gzip或--ungzip 通过gzip指令处理备份文件
-v或--verbose 显示指令执行过程
-f<备份文件>或--file=<备份文件> 指定备份文件

posted @ 2020-09-17 00:18  ooops!  阅读(260)  评论(0编辑  收藏  举报