ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# **Linux命令使用:** ## **History** 展示历史命令 **参考菜鸟 : [Linux 命令大全 | 菜鸟教程 (runoob.com)](https://www.runoob.com/linux/linux-command-manual.html)** ## **Ls:** * a 显示所有文件及目录 (**.** 开头的隐藏文件也会列出) * l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 * r 将文件以相反次序显示(原定依英文字母次序) * t 将文件依建立时间之先后次序列出 * h 以人可读常用单位展示大小 * A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) * F 在列出的文件名称后加一符号;例如可执行档则加 "\*", 目录则加 "/" * R 若目录下有文件,则以下之文件亦皆依序列出 ### **eg:`ls -lhtr /home/`** ## **Cp:** * a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 * d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。 * f:覆盖已经存在的目标文件而不给出提示。 * i:与 **f** 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 **y** 时目标文件将被覆盖。 * p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 * r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 * l:不复制文件,只是生成链接文件。 ### **eg:`cp -rf /home/packageA/* /home/cp/packageB/`** ## **Scp:** * 1: 强制scp命令使用协议ssh1 * 2: 强制scp命令使用协议ssh2 * 4: 强制scp命令只使用IPv4寻址 * 6: 强制scp命令只使用IPv6寻址 * B: 使用批处理模式(传输过程中不询问传输口令或短语) * C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) * p:保留原文件的修改时间,访问时间和访问权限。 * q: 不显示传输进度条。 * r: 递归复制整个目录。 * v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 * c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。 * F ssh\_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。 * i identity\_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 * l limit: 限定用户所能使用的带宽,以Kbit/s为单位。 * o ssh\_option: 如果习惯于使用ssh\_config(5)中的参数传递方式, * P port:注意是大写的P, port是指定数据传输用到的端口号 * S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。 1.本地文件或目录复制到远程 **eg:`scp -r local_file remote_username@remote_ip:remote_folde`** 或 **eg:`scp -r local_file remote_ip:remote_folder`** 2.远程复制到本地:只要将从本地复制到远程的命令的后2个参数调换顺序即可 3.远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号 **eg:`scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator/`** ## **Nc:** 1. 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口 2.端口的扫描,nc可以作为client发起TCP或UDP连接 3.机器之间传输文件 4.机器之间网络测速 ### **参数:** \-g 设置路由器跃程通信网关,最多可设置8个。 \-G 设置来源路由指向器,其数值为4的倍数。 h 在线帮助。 \-i 设置时间间隔,以便传送信息及扫描通信端口。 \-l 使用监听模式,管控传入的资料。 \-n 直接使用IP地址,而不通过域名服务器。 \-o 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。 \-p 设置本地主机使用的通信端口。 \-r 乱数指定本地与远端主机的通信端口。 \-s 设置本地主机送出数据包的IP地址。 \-u 使用UDP传输协议。 \-v 显示指令执行过程。 \-w 设置等待连线的时间。 \-z 使用0输入/输出模式,只在扫描通信端口时使用。 ### **示例:** $ nc -l 9999                        # 开启一个本地9999的TCP协议端口,由客户端主动发起连接,一旦连接必须由服务端发起关闭 $ nc -vw 2 192.168.21.248 11111     # 通过nc去访问192.168.21.248主机的11111端口,确认是否存活;可不加参数 $ nc -ul 9999                       # 开启一个本地9999的UDP协议端口,客户端不需要由服务端主动发起关闭 $ nc 192.168.21.248 9999 < test     # 通过192.168.21.248的9999TCP端口发送数据文件 $ nc -l 9999 > zabbix.file          # 开启一个本地9999的TCP端口,用来接收文件内容 ### **测试网速:** A机器操作如下: $yum install -y dstat           # A机器安装dstat命令 $ nc -l 9999 > /dev/null B机器开启数据传输 nc 10.0.1.161 9999 </dev/zero A机器进行网络监控 $ dstat ## **vi:** ### **1、进入vi**     在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 首先会进入「命令行模式(command mode)」 a) 切换至插入模式(Insert mode)编辑文件 在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。 按ESC退回命令行模式 b) 退出vi及保存文件   在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如: : w filename (输入 「w filename」将文章以指定的文件名filename保存) : wq (输入「wq」,存盘并退出vi) : q! (输入q!, 不存盘强制退出vi) 按ESC退回命令行模式 ### **2、命令行模式(command mode)功能键** 1). 插入模式   按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;   按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;   按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。 2). 从插入模式切换为命令行模式   按「ESC」键。 3). 移动光标 vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 按「ctrl」+「b」:屏幕往“后”移动一页。 按「ctrl」+「f」:屏幕往“前”移动一页。 按「ctrl」+「u」:屏幕往“后”移动半页。 按「ctrl」+「d」:屏幕往“前”移动半页。 按数字「0」:移到文章的开头。 按「G」:移动到文章的最后。 按「$」:移动到光标所在行的“行尾”。 按「^」:移动到光标所在行的“行首” 按「w」:光标跳到下个字的开头 按「e」:光标跳到下个字的字尾 按「b」:光标回到上个字的开头 按「#l」:光标移到该行的第#个位置,如:5l,56l。 4). 删除文字 「x」:每按一次,删除光标所在位置的“后面”一个字符。 「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 「dd」:删除光标所在行。 「#dd」:从光标所在行开始删除#行 5). 复制 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。 「#yw」:复制#个字到缓冲区 「yy」:复制光标所在行到缓冲区。 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 6). 替换 「r」:替换光标所在处的字符。 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。 7). 回复上一次操作 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。 8). 更改 「cw」:更改光标所在处的字到字尾处 「c#w」:例如,「c3w」表示更改3个字 9). 跳至指定的行 「ctrl」+「g」列出光标所在行的行号。 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。 ### **3、Last line mode下命令简介**   在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。 A) 列出行号 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。 B) 跳到文件中的某一行 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 C) 查找字符 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 D) 保存文件 「w」:在冒号输入字母「w」就可以将文件保存起来。 E) 离开vi 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。 「Z」:和qw一样具有保存功能 ## **Chmod:** 其中参数: ·u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 ·\+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 ·r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。 其他参数说明: ·\-c : 若该文件权限确实已经更改,才显示其更改动作 ·\-f : 若该文件权限无法被更改也不要显示错误讯息 ·\-v : 显示权限变更的详细资料 ·\-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) ·\--help : 显示辅助说明 ·\--version : 显示版本 ### **实例** 将文件 file1.txt 设为所有人皆可读取 : chmod ugo+r file1.txt 将文件 file1.txt 设为所有人皆可读取 : chmod a+r file1.txt 将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 : chmod ug+w,o\-w file1.txt file2.txt 为 ex1.py 文件拥有者增加可执行权限: chmod u+x ex1.py 将目前目录下的所有文件与子目录皆设为任何人可读取 : chmod \-R a+r \* 此外chmod也可以用数字来表示权限如 : chmod 777 file 语法为: chmod abc file 其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4,w=2,x=1 ·若要 rwx 属性则 4+2+1=7; ·若要 rw- 属性则 4+2=6; ·若要 r-x 属性则 4+1=5。 ## **chown:** **参数** : * user : 新的文件拥有者的使用者 ID * group : 新的文件拥有者的使用者组(group) * c : 显示更改的部分的信息 * f : 忽略错误信息 * h :修复符号链接 * v : 显示详细的处理信息 * R : 处理指定目录以及其子目录下的所有文件 * \-help : 显示辅助说明 * \-version : 显示版本 ### **实例** 把 /var/run/httpd.pid 的所有者设置 root: * chown root /var/run/httpd.pid 将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup : * chown runoob:runoobgroup file1.txt 将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup: * chown -R runoob:runoobgroup \* 把 /home/runoob 的关联组设置为 512 (关联组ID),不改变所有者: * chown :512 /home/runoob ## **Top、Htop:** ### **参数:** top: -d delay -n iterations [-u user | -U user] -p pid [,pid ...] -d 每[延迟]秒更新一次 -n 更新[计数]次 -u 查看指定使用者 -p 查看指定任务id htop: -C--无颜色使用单色配色方案 -d--delay设置更新之间的延迟,以十分之一秒为单位 -h--帮助打印此帮助屏幕 -s--sort key=按列排序(try--sort key=列表帮助) -u--user=USERNAME仅显示给定用户的进程 -p--pid,[,pid,pid…]仅显示给定的PID -v--版本打印版本信息 ### **区别:** * htop提供了正在运行的完整进程列表,而不是最消耗资源的进程 * htop使用颜色并提供关于处理器,交换和内存状态的视觉信息。 * htop支持鼠标操作,top不支持 ### **解析使用:** top: [https://www.cnblogs.com/zhoug2020/p/6336453.html](https://www.cnblogs.com/zhoug2020/p/6336453.html) htop: [https://www.cnblogs.com/yqsun/p/5396363.html](https://www.cnblogs.com/yqsun/p/5396363.html) ## **Free:** ### **参数:** usage: free [-b|-k|-m|-g|-h] [-l] [-o] [-t] [-s delay] [-c count] [-V] -b,-k,-m,-g 以字节、KB、MB或GB为单位显示输出 -h 人类可读输出(自动单位缩放) -l 显示详细的低内存和高内存统计信息 -o 使用旧格式(无-/+缓冲区/缓存线) -t 显示RAM+交换的总计 -s 每[延迟]秒更新一次 -c 更新[计数]次 -a 如果由内核导出,则显示可用内存(>每行80个字符) -V 显示版本信息并退出 ### **常用:** $ free -h -s 10 -c 6 # 每10秒刷新一次,共刷新6次,测试终止任务查看内存释放,可配合重定向使用(free -h -s 10 -c 6 > ./log.free &) ## **Netstart:** ### **参数:** -a (all) 显示所有选项,默认不显示LISTEN相关。 -t (tcp) 仅显示tcp相关选项。 -u (udp) 仅显示udp相关选项。 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服务状态。 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。 ### **使用:** 1、列出所有端口 $netstat -a 2、列出所有 tcp 端口 $netstat -at 3、列出所有 udp 端口 $netstat -au 4、只显示监听端口 $netstat -l 5、只列出所有监听 tcp 端口 $netstat -lt 6、只列出所有监听 udp 端口 $netstat -lu 7、列出所有监听 UNIX 端口 $netstat -lx 8、显示所有端口的统计信息 $netstat -s 9、显示 TCP 或 UDP 端口的统计信息 $netstat -st 或 -su 10、 输出中显示 PID 和进程名称 $netstat -p 11、netstat 输出中不显示主机,端口和用户名 (host, port or user) 当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。 同样可以加速输出,因为不用进行比对查询。 $netstat -an 如果只是不想让这三个名称中的一个被显示,使用以下命令 $netsat -a --numeric-ports $netsat -a --numeric-hosts $netsat -a --numeric-users 12、持续输出 netstat 信息  #netstat -c 13、找出程序运行的端口 #netstat  -ap | grep ':80' 14、查看连接某服务端口最多的的IP地址(前20个) $netstat -nat | grep "10.1.62.23:443" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20 15、TCP各种状态列表  $netstat -nat |awk '{print $6}' 统计数量 $netstat -nat |awk '{print $6}'|sort|uniq -c 排序 $netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn $netstat -n | awk '/^tcp/ {++S\[$NF\]} END {for(a in S) print a, S\[a\]}' 16、直接统计tcp数量监听的数量 $netstat -ant | wc -l 17、监控端口使用情况(常用) $netstat -nltp