涉及到查找文件、将文件内容加载到内存中进行操作。
用于查找文件,比如 find / -name *.java 查找根目录下的所有java文件
-name 按名称查找
find /home/js/ -name test 查找/home/js/目录下的test文件
-type 按类型查找(f(file)、d(directory)、l(link))
find /home/js/ -type d 查找/home/js/目录下的类型是目录的文件
-atime/mtime 按访问时间/修改时间查找
find /home/js -atime -7 查找/home/js/目录下访问时间在7天以内的文件
-size 按大小查找(k(KB)、m(MB)、g(GB))
find /home/js -size -1k 查找/home/js/目录下大小小于1KB的文件
-perm 按权限查找(4(r)、2(w)、1(x))
find /home/js -perm 444 查找/home/js/目录下只读的文件
查找文件中包含的关键字,最终显示的是包含关键字的所有行,比如 grep "find" Command.md 在Command.md中查找包含"find"关键字的行
grep -e "find" -e "test" Command.md 在Command.md中查找包含"find"和"test"关键字的行对文件中的内容进行排序,排序在内存中进行,不会修改源文件。 比如 sort /home/test 默认是按字典序排序(-d)
-n 按数字排序(前提是test里的文本是数字,且要排序的多个数字不能在同一行)
sort -n /home/js/test 对test里的每行内容按数字顺序排序
-d 按字典序(要排序的多个字符串不能在同一行)
sort -d /home/js/test 对test里的每行内容按字典顺序排序
-k N 表示每行按第N列排序(列与列之间要用空格隔开)
sort -k 1 /home/js/test 对test里的每行按第 1 列排序
-r 和其它参数组合实现逆序排序
sort -r -k 1 /home/js/test 对test里的每行按第 1 列逆序排序
过滤掉相邻的重复行,重复行需要相邻(需要先用sort排序,使得重复行相邻)。 比如 sort /home/test | uniq 输出去除重复行的内容
转换文本中的内容,转换在内存中进行,不会修改源文件。 需要将其它程序的输出作为输入进行处理。 less test | tr a b > out 将less获取的输出作为输入,然后将其中的a转换成b输出到out中。
-s 将连续的字符或者字符串转换成指定字符或者字符串
less test | tr -s 'ab' 'b' 将test中连续的ab替换成b的内容作为输出
-d 删除字符
less test | tr -d a 删除test中出现的a字符的内容作为输出
截取每一行中指定的字节/字符/列,截取在内存中进行,不会修改源文件。比如:cut -c 1-3 test,截取test中每一行的第一字符至第三字符。
-b 按字节截取
cut -b 1-3 test 截取test中每一行的第一字节至第三字节。
-d 按指定分隔符截取,-f 按字段截取。每一行的列与列之间通过-d区分,否则会当成一个字段
cut -d ' ' -f 1-3 test 截取test中每一行中的第一列至第三列,列与列之间以空格作为间隔
将多个文件中的内容水平拼接在一块,文件与文件之间的内容默认是以制表符作为间隔。比如:paste test test2 将test和test2中的内容拼接在一起
-d 自定义文件之间的间隔符
paste -d '|' test test2 用 |作为test和test2的间隔符。
-s 一次性读取完一个文件作为一行,文件之间垂直拼接
paste -s test test2 先从左到右,从上到下读取完test中的内容放到第一行,然后再从左到右,从上到下读取test2中的内容放到下一行。
统计文件中的字节数/字符数/单词数量/行数。 比如 wc -w test统计test中的单词数量
查看机器的运行状态,比如进程快照信息,IO信息,内存/磁盘使用情况。
查看进程状态快照,比如ps -aux|grep java 打印关于Java进程的快照
ps -ef ps -aux 实时监控进程状态信息。并且可以交互(按P则会按照CPU使用率排序,按M则会按内存使用率排序)。比如 top -u js 实时查看用户js开启的进程信息
pid的进程信息top -p 20348 监控进程号为20348的进程信息pid的线程状态top -Hp 20348 监控进程号为20348的进程内部的线程状态查看某个目录中所有文件大小。 比如 du js -h 查看js目录中文件占用空间大小。
查看打开的文件,比如 lsof -p 23478 查看进程号为23478打开的文件
lsof -i :80 列出网络地址中网络层是IPV6或IPV4并且运输层是TCP或UDP并且主机名是任意的,但是占用的端口号是80的文件。 意思就是查看占用80端口的进程。lsof -u js 查看用户js打开的文件lsof -p 23478 查看进程号为23478打开的文件lsof -c java 查看命令为java的打开的文件+d directory 查看指定目录下被打开的文件 +D加上递归lsof +d /home/js/workspace 查看/home/js/workspace下被打开的文件查看内存及交换区使用情况 比如 free -b 以字节的形式显示内存使用情况
监控CPU使用率、内存使用率、磁盘IO情况、网卡工作情况 比如 sar -b 1 2 查看磁盘IO情况,每一秒显示一次,共显示两次。(需要开启系统监控: 修改/etc/default/sysstat中的ENABLED=true)
查看网络信息,比如查看处于不同连接状态(运输层是TCP/UDP、已经建立或者正在监听)的连接。发送网络请求
查看网络连接状态信息。比如 netstat -t 查看已经建立的TCP连接信息
netstat -tp查看协议是TCP的进程名
netstat -np | grep nginx查看和nginx进程有关的端口号(本地端口、远程端口)
netstat -np | grep 80查看和80端口号有关的连接(不一定是占用,可能请求的远程地址对应的端口也是80)
netstat -ntlp | grepnginx进程正在监听的端口号
重点是模拟发送网络请求(HTTP、FTP、SCP、POP3、SMTP...),不是下载数据。 默认重定向到标准输出。
-H 指定请求头 -X指定请求方法
curl -H 'Content-Type: application/json' -XPOST https://www.baidu.com
-o/O 指定保存的文件名/使用请求的文件的文件名
curl -o test.html jinshuai86.github.io/wiki/Linux/Command.html 将Command.html中的内容保存到test.html中
curl -O jinshuai86.github.io/wiki/Linux/Command.html 将Command.html中的内容保存到本地文件,本地文件的文件名为Command.html。
301、302时,curl默认不会重定向到location header中的URL,加上-L就会重定向到location header中的URL。curl jinshuai86.github.io/about请求的内容是301页面,加上-L即可重定向到新的页面。-o/O,C和o/O之间有-分隔curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html-urlencode会对特殊字符进行转义比如空格=>%20curl -d-urlencode "username=jin shuai&password=123" http://jinshuai86.github.iocookie。 比如 curl -D cookie https://www.github.com将要设置的cookie保存到cookie文件中-D设置的cookie。比如 curl -b cookie https://www.github.com下载数据,相对curl,wget支持递归下载
,隔开。 比如wget --reject=css,js jinshuai86.github.io/about 不下载css和js类型的文件 ,隔开。远程传输文件,基于SSH协议。scp相对于ftp、rsync,传输速度较快,对系统影响不大。
比如 scp localfile remoteIP:folder 将本地文件localfile传输到IP地址为remoteIP的foler文件夹中
Windows下有图形界面的winscp工具支持scp
scp -r upload 114.114.114.114:~/download 将本地文件夹upload传输到114.114.114.114的~/download文件夹
scp 114.114.114.114:~/upload/note.md ~/download 将远程114.114.114.114的node.md下载到本地的~/download目录
扫描服务器端口信息, 比如 nmap ip -p port 查看指定IP的指定端口打开状态 或者 nmap ip 查看指定ip机器打开的全部端口
-p 指定端口(默认是TCP)
nmap 114.114.114.114 -p 23 扫描23端口, nmap 114.114.114.114 -p 1-1023 扫描1到1024端口
-sU 扫描UDP端口
-sV 扫描软件类型,操作系统类型
执行定时任务,可以以固定的时间间隔执行一些命令或者脚本文件。具体用法: crontab [提前写好的定时文件]
* * * * * command
分钟 小时 天 星期 月 具体命令。
* * * * * command 每分钟执行一次命令
浏览目录
ls -l da[!t]a列出第三个字符不是t的目录中的内容 拷贝文件
cp -i test.md /home/js/ 如果/homg/js/ 里面已经有test.md,就会提示。 mv/rm命令同理 /。 比如 cp test.md /home/sj 如果sj不存在并且后面还没有/ 就会创建sj文件,并且将test.md的内容拷贝到sj中。如果在sj后面加上/ 如果没有sj目录,就会提示错误信息,需要对比的是,如果将一个目录递归拷贝到另一个不存在的目录就可以实现。打包、压缩、解压文件
-cf 创建(create):将文件打包
-xf :解包(extract)(打包的逆操作)
-z : 在打包/解包的同时,通过gzip进行压缩/解压
-tf 或者 --list: 列出(list)这个包中的内容
-rf 或者 --append: 往包中追加文件
-f可以实时查看ugo rwx=421。 一般加 -R 递归修改alias ll='ls -l' (注意: 等于号左右不能有空格)