常见命令
查看内存
top
PID:进行编号
USER:进程的持有用户
PR:进程运行的优先级,值越小优先级越高,会越早获取CPU的执行权
NI:进程的nice值,表示进程可被执行的优先级的修正数值
VIRT:进程使用虚拟内存,单位kb
RES:常驻内存,单位kb
SHR:进程使用的共享内存,单位kb
S:进程运行状态。(S:休眠;D:不可中断睡眠;R:运行中;T:跟踪/停止;Z:假死中)
%CPU:进行运行时CPU的占用比
%MEM:进程使用的内存占用比
TIME+:进程占用的CPU总时长
COMMAND:进程名
grep -o "ab" /DiskA/test/* |wc -l
free
查看日志
tail
tail -f test.log
- 1
你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C。
cat .bashrc | tail -n +3 | head -n 7 第三行到第10行
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行
查看最新的30条日志 tail -30f a.log
lsof 查看端口占用语法格式:
lsof -i:端口号
lsof -i:5090 //查看 5090 端口的连接情况
ls
命令不仅可以查看 linux 文件夹包含的文件而且可以查看文件权限 ls -l 权限 ls -a 隐藏文件
cat 命令
用来显示文件内容
cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;
cat主要有三大功能: 1).一次显示整个文件:cat filename 2).从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件. 3).将几个文件合并为一个文件:cat file1 file2 > file
more
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
将日志内容设置为每屏显示4行
输出:
1 aijian.shi@U-aijian-shi:~/ALM$ more -4 test.log 2 2016-8-1 aijian.shi 3 2016-8-2 yafang.wei 4 2016-8-3 hong.zhan 5 2016-8-4 yuyan.zhang 6 7 ...skipping one line #这里使用ctrl+F或者空格键来滚屏 8 2016-8-6 yanbin.liu 9 2016-8-7 hui.liu 10 2016-8-8 yanhua.liu 11 2016-8-9 baoixn.cui 12 13 ...skipping one line 14 2016-8-11 zhongjun.zhen 15 2016-8-12 qiu.liao
less
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
find 命令
主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作
- -name 按照文件名查找文件
- -type 查找某一类型的文件
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
# find . -name "*.c"
查看/usr下以.log结尾的文件 find /usr -name '*.log'
find /usr -name '*.log'|wc -l 行数
去重
uniq
cat /DiskA/test/a.txt
1
3
w
1
2
3
w
4
sort /DiskA/test/a.txt |uniq |head -n 2
1
2
rm 命令
删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录 -f 强制
Linux删除7天前的文件,删除日志文件
使用find命令搜索X天前的文件,前根据需要删除它
先列出 /home/web/db 下面7天前的文件
find /home/web/db -type f -mtime +7
1
检查列出的文件列表,如果没有问题,使用下面的命令删除它
find /opt/backup -type f -mtime +7 -exec rm -f {} \;
1
根据文件后缀删除文件
增加过滤条件,只删除某一类型的文件。
比如删除.log后缀的7天前的日志文件
find /var/log -name "*.log" -type f -mtime +7
1
同样,检查下列出的日志是否正确,然后再使用下面命令删除它
find /var/log -name "*.log" -type f -mtime +7 -exec rm -f {} \;
{} \;表示把查找到的结果发送到此来。
pwd
mv 可以用来移动文件或者将文件改名(move (rename) files)
mkdir
cp
touch 创建文件
grep
用于过滤/搜索的特定字符
https://blog.csdn.net/weixin_37335761/article/details/122682881
grep [options] [pattern] [file ...]
options -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 # 在显示符合范本样式的那一列之前,标示出该列的编号。 -P --perl-regexp # PATTERN 是一个 Perl 正则表达式 -q --quiet或–silent # 不显示任何信息。 -R/-r --recursive # 此参数的效果和指定“-d recurse”参数相同。 -s --no-messages # 不显示错误信息。 -v --revert-match # 反转查找。 -V --version # 显示版本信息。 -w --word-regexp # 只显示全字符合的列。 -x --line-regexp # 只显示全列符合的列。 -y # 此参数效果跟“-i”相同。 -o # 只输出文件中匹配到的部分。 -m --max-count= # 找到num行结果后停止查找,用来限制匹配行数
pattern ^ # 锚定行的开始 如:’^grep’匹配所有以grep开头的行。 $ # 锚定行的结束 如:‘grep$’ 匹配所有以grep结尾的行。 . # 匹配一个非换行符的字符 如:'gr.p’匹配gr后接一个任意字符,然后是p。 * # 匹配零个或多个先前字符 如:’*grep’匹配所有一个或多个空格后紧跟grep的行。 .* # 一起用代表任意字符。 [] # 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。 [^] # 匹配一个不在指定范围内的字符,如:’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 \(..\) # 标记匹配字符,如’(love)’,love被标记为1。 \< # 锚定单词的开始,如:’` # 锚定单词的结束,如’grep>'匹配包含以grep结尾的单词的行。 x\{m\} # 重复字符x,m次,如:'0{5}'匹配包含5个o的行。 x\{m,\} # 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。 x\{m,n\} # 重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5–10个o的行。 \w # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。 \W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b # 单词锁定符,如: '\bgrep\b’只匹配grep。
查找文件中的关键词
> cat rumenz.txt
rumenz.txt
one
tow
qaz
redis
linux123
linuxxxx
rumenz
123
789
> grep "linux" rumenz.txt === cat rumenz.txt |grep "linux"
linux123
linuxxxx
// -n 显示行号
> grep -n "linux" rumenz.txt
6:linux123
7:linuxxxx
root@cltt-ThinkStation-P920:/home/cltt# cat a.txt
ddd
df
dd
dfdd
root@cltt-ThinkStation-P920:/home/cltt# grep -c 'dd' a.txt -c统计的是行数,并不是个数
3
grep -c '\bdd\b' a.txt 只匹配dd
1
grep -o 'dd' a.txt | wc -l 统计个数
4
查找统计 /DiskA/test目录下所有.txt文件中某一字符的个数
grep -o "ab" /DiskA/test/*.txt | wc -l
如何统计所有文件中某个字符串出现了多少次
grep -o "ab" /DiskA/test/* |wc -l
统计日志文件中ERROR出现的次数
grep 'ERROR' xx.log |wc -l
wc是一个非常方便的文本处理命令,可以统计文件的行数、单词数、字符数。
https://www.cnblogs.com/lfjn/p/11382719.html
从文件中读取关键词进行搜索
// 待查找的文本 > cat rumenz.txt rumenz.txt one tow qaz redis linux123 linuxxxx rumenz 123 789 // 需要查找的多个关键词 > cat k.txt linux redis > cat rumenz.txt | grep -f k.txt redis linux123 linuxxxx //显示行号 > cat rumenz.txt | grep -nf k.txt 5:redis 6:linux123 7:linuxxxx
从多个文件中查找关键词
> grep "linux" rumenz.txt rumenz123.txt rumenz.txt:linux123 rumenz.txt:linuxxxx rumenz123.txt:linux123 rumenz123.txt:linuxxxx rumenz123.txt:linux100
多文件时,输出查询到的信息内容行时,会把文件的命名在行最前面输出并且加上":"作为标示符
从多个文件中查找关键词,使用通配符
// 查找当前目录下所有以rumenz开头的文件 > grep "linux" rumenz* rumenz123.txt:linux123 rumenz123.txt:linuxxxx rumenz123.txt:linux100 rumenz.txt:linux123 rumenz.txt:linuxxxx // 查找当前目录下所有以.txt结尾的文件 > grep "linux" *.txt k.txt:linux rumenz123.txt:linux123 rumenz123.txt:linuxxxx rumenz123.txt:linux100 rumenz.txt:linux123 rumenz.txt:linuxxxx
找出以r开头的行内容
> cat rumenz.txt | grep ^r
rumenz.txt
redis
rumenz
找出非r开头的行内容
> cat rumenz.txt | grep ^[^r]
one
tow
qaz
linux123
linuxxxx
123
789
显示包含li或者23字符的内容行
> cat rumenz.txt | grep -E "li|23"
linux123
linuxxxx
123
显示当前目录下面以.txt 结尾的文件中的所有包含每个字符串至少有3个连续小写字符的字符串的行
> grep "[a-z]\{3\}" *.txt
k.txt:linux
k.txt:redis
rumenz123.txt:rumenz.txt
rumenz123.txt:one
rumenz123.txt:tow
rumenz.txt:rumenz
以递归的方式查找符合条件的文件
> grep -rl "rumenz" /root/test/
/root/test/src/sbin/patch.log
/root/test/src/doc/rumenz.txt
/root/test/src/doc/rumenz123.txt
/root/test/src/InfiniteLoop.class
/root/test/src/InfiniteLoop.java
查找rumenz.txt中包含linux行的前2行
> grep -B 2 "linux" rumenz.txt
qaz
redis
linux123
linuxxxx
查找rumenz.txt中包含linux行的后2行
> grep -A 2 "linux" rumenz.txt
linux123
linuxxxx
rumenz
123
查找rumenz.txt中包含linux行的前后各2行
> grep -C 2 "linux" rumenz.txt
qaz
redis
linux123
linuxxxx
rumenz
123
查看某目录下的文件个数
https://jn10010537.blog.csdn.net/article/details/122439208?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-122439208-blog-113416060.t0_edu_mix&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-122439208-blog-113416060.t0_edu_mix&utm_relevant_index=3
查看当前目录下的文件个数使用命令:
ls -l | grep "^_" | wc -l
查看指定目录下的文件个数
ls -l dir| grep "^_" | wc -l
查看指定目录下的文件个数 所谓递归,即如果当前目录有文件夹,则会层层搜索所有文件夹中的所有文件。
ls -lR | grep "^_" | wc -l
ps
主要是查看服务器的进程信息
ps -ef
-e:等价于 ‘-A’ ,表示列出全部的进程
-f:显示全部的列(显示全字段)
UID: 该进程执行的用户id
PID: 进程id
PPID: 该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
C: cpu的占用率,形式是百分数(%)
STIME: 进程的启动时间
TTY: 终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
TIME: 进程的执行时间
CMD: 该进程的名称或对应的路径
————————————————
查找进程
:ps -ef | grep 进程名称
注意:执行该命令至少有一个进程(搜索该命令的进程)
grep不显示本身进程
> ps -ef | grep redis | grep -v grep
root 14383 1 0 Jan08 ? 01:16:03 /opt/redis-5.0.8/src/redis-server *:6379
polkitd 31977 31941 0 Jan11 ? 01:14:22 redis-server *:6379
还可以通过进程id查询
ps -ef | grep 522
netstat -nap | grep 522
查看到进程id之后,使用netstat命令查看其占用的端口
netstat -nap | grep pid
查找进程个数
> ps -ef | grep -c java
10
> ps -ef | grep java -c
10
sort
https://blog.csdn.net/carefree2005/article/details/115553478
Linux sort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序。sort命令将每一行作为一个单位进行比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按一定的顺序进行输出。sort命令经常可以与ls、cat等命令结合使用,将查询到的结果按照我们要求进行排序。
-h:以人类可读的方式显示
[root@test1 ~]# cat word.txt
one
two
two
three
four
[root@test1 ~]# sort word.txt
four
one
three
two
two
按照数字大小排序
[root@test1 ~]# cat num.txt
10
8
20
100
4
[root@test1 ~]# sort -n num.txt
4
8
10
20
100
去重后排序
[root@test1 ~]# sort -u word.txt
four
one
three
two
去重+降序
[root@test1 ~]# sort -ur word.txt
two
three
one
four
文件夹大小排序
指定分隔符并按照指定列排序 -k 从1开始
sort -t ':' -k 3 -nr /etc/passwd
将排序结果输出到文件
sort -t ‘:’ -k 3 -nr /etc/passwd > /tmp/out.log
du
du 的默认单位是 KB,也就是 1024bytes
http://t.zoukankan.com/xiaojianblogs-p-6697915.html
查看当前目录下每个目录占用的空间
root@sam9x25-linux:~ du -sh *
1.9M app
3.9M backup
44.0K cfg
8.0K default
936.0K font
168.0K lib
1.4M log
744.0K logfile
也可以看某个目录的使用情况 /home/log/compress_write_log_test/ 指定目录
root@sam9x25-linux:~ du -sh /home/log/compress_write_log_test/
df
功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息.
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况.
该命令各个选项的含义如下:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统.
-k 以k字节为单位显示.
-i 显示i节点信息,而不是磁盘块.
-t 显示各指定类型的文件系统的磁盘空间使用情况.
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反).
-T 显示文件系统类型.
awk
一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
Linux文本三剑客,即awk、grep、sed,这三个命令是Linux中常用的文本处理命令,主要作用是对文本内容做查看、修改等操作,那么Linux系统中awk和sed有什么区别?相信很多人都比较好奇,小编通过这篇文章为大家介绍一下。
Linux sed命令是利用脚本来处理文本文件。sed可依照脚本的指令来处理、编辑文本文件。sed主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
Linux awk命令是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人Alfred Aho、Peter Weinberger和Brian Kernighan的Family Name的首字符。
主要区别如下:
1、sed是一种非交互式且面向字符流的编辑器,awk则是一门模式匹配的编程语言,因为它的主要功能是用于匹配文本并处理,同时它有一些编程语言才有的语法,例如函数、分支循环语句、变量等等,当然比起我们常见的编程语言,AWK相对比较简单。
2、sed一般对行进行操作,awk对列进行操作。
3、sed擅长数据修改,awk擅长数据切片,数据格式化,功能最复杂。
4、sed全称Stream Editor,擅长对文件做数据做修改的操作,非常高效。
5、awk更适合格式化文本,对文本进行较复杂格式处理,awk程序对输入文件的每一行进行操作;awk是一门解释型的编程语言,文本处理、输出格式化的文本报表、执行算数运算、执行字符串操作等等。
查询 文件某行某列的数据
sed -n '2p' /DiskA/test/a.txt|awk '{print $1}'
查询某个时间段的日志,导出到本地
sed -n ‘/2019-10-24 22:16:21/,/2019-10-21 20:16:58/p’ all.log > yoyo.log
linux系统中定时执行shell脚本的两种方式
https://www.cnblogs.com/hengli123/p/13700923.html
1、第一种是针对某个用户的任务,直接输入 crontab -e
格式:00 00 * * * /home/linrui/XXXXXXXX.sh,这将会在每天凌晨00:00运行 指定的.sh文件。
如果你要打算将日志写入黑洞中,可以这样写 00 00 * * * /home/linrui/XXXXXXXX.sh >> /dev/null 2>&1
2、第二种是针对系统的任务,直接输入vi /etc/crontab
格式:10 16 * * * root /opt/datatom/zy/suishenma/aomen_rujing/bin/start_2.sh >> /opt/datatom/zy/suishenma/aomen_rujing/bin/start_2_log.txt
批量删除进程
https://blog.csdn.net/konglongaa/article/details/52702217
ps -ef | grep XXX |awk '{print $2}'
awk的作用是输出某一列,{print $2}就是输出第二列,如上即是pid这一列。
ps -ef | grep python |awk '{print $2}'
因此 kill -9 `ps -ef | grep python |awk '{print $2}' `
kill -9后面的符号是Tab键上方那个
批量删除上面的进程