常见命令

查看内存

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   统计个数

 

查找统计 /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

-h:以人类可读的方式显示
  -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
  -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
  -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
  --apparent-size:显示目录或文件自身的大小
  -l :统计硬链接占用磁盘空间的大小
  -L:统计符号链接所指向的文件占用的磁盘空间大小

查看当前目录下每个目录占用的空间  

 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键上方那个

 批量删除上面的进程

 

posted on 2022-03-17 09:26  cltt  阅读(142)  评论(0编辑  收藏  举报

导航