Linux常用命令
文件筛选
按修改时间倒序查看文件
ls -lrt
按名字筛选,包含字符abc的
find /path/to/search -type f -name "*abc*"
删60分钟前的日志。60分钟以内有modify的不删除
sudo find . -type f -mmin +60 -delete
进程端口
查看进程
1. ps 非实时查看当前时间点进程
查看某个时间点的进程信息。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等
示例:查看自己的进程
## ps -l
示例:查看系统所有进程
## ps aux
示例:查看特定的进程
## ps aux | grep threadx
2. pstree 查看进程树
显示当前所有进程的进程号和进程id
pstree -p
显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。
pstree -a
3. top 实时查看进程及cpu/mem
实时显示进程信息。是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
示例:两秒钟刷新一次
## top -d 2
kill 进程
kill / killall
kill -9 process_id
for more process:
sudo kill -9 process_id_1 process_id_2 process_id_3
If you know the name of the program, you can use the magnificent killall command and kill all the processes of that program in one single command.
killall program_name
查看IP
1. ifconfig 或者 ip
先inet,再inet6,再127
getip () {
if $ismac
then
ifconfig | grep inet | grep -v inet6 | grep -v 127 | cut -d ' ' -f2
elif $islinux
then
ip a | grep inet | grep -v inet6 | grep -v 127 | sed 's/^[ \t]*//g' | cut -d ' ' -f2
fi
}
通过pid查看端口/通过端口查看pid
不知道pid可先查看进程
pid: ps -ef | grep 进程名
netstat -anp | grep port
netstat -nap | grep 进程pid
大日志查看
grep
sed
Syntax: $ sed -n -e Xp -e Yp FILENAME
- sed : sed command, which will print all the lines by default.
- -n : Suppresses output.
- -e CMD : Command to be executed
- Xp: Print line number X
- Yp: Print line number Y
- FILENAME : name of the file to be processed.
In the following example, you can view the content of var/log/cron from line number 101 to 110.
- M – Starting line number
- N – Ending line number
Syntax: sed -n M,Np FILENAME
$ sed -n 101,110p /var/log/cron
more
和cat不同是不会一次性加载大文件。
Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
从第 20 行开始显示 testfile 之文档内容。
more -d +20 testfile
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
- Ctrl+B 返回上一屏
d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
Less
和more类似,扩展更多。
less [参数] 文件
-N 显示每行的行号
/字符串:向下搜索”字符串”的功能
?字符串:向上搜索”字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
back,front, up, down和vim类似,比如u是向后半页。也可以加ctrl效果一样
- ctrl + F - 向前移动一屏
- ctrl + B - 向后移动一屏
- ctrl + D - 向前移动半屏
- ctrl + U - 向后移动半屏
- j - 下一行
- k - 上一行
- G - 移动到最后一行
- g - 移动到第一行
- q / ZZ - 退出 less 命令
v - 使用配置的编辑器编辑当前文件
标记导航
当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:
- ma - 使用 a 标记文本的当前位置
- ‘a - 导航到标记 a 处
less后再跳转某行
- g第一行
- 然后按下数字就可以往下➕多少行。
打开文件时直接定位到某个位置
# 直接定位到第100行
less +100g xx.log
浏览多个文件
less log2013.log log2014.log
说明: 输入 :n后,切换到 log2014.log 输入 :p 后,切换到log2013.log
可以按 :e 查看下一个文件, 用 :n 和 :p 来回切换。
ps查看进程信息并通过less分页显示
ps -ef |less
tail
tail -f xxx
定位某行请用less/more
# 直接定位到第100行
less +100g xx.log
more -d +20 testfile
压缩gz日志查看
linux或者unix天然支持一些z开头的命令,可以应用于.gz后缀的压缩文件。
注意对.gz压缩文件使用本grep是搜不到的,因为是二进制。
zcat * | grep xx # 不推荐,不知道哪个文件 记住后面的grep可以加参数 但不能加r,r没法这样用管道。
zgrep xxx * #推荐,会显示哪个文件,但此时无法应用color=auto只能用iterm查找高亮了。
zgrep --color=auto -i -n xxx *
find -type f | xargs zgrep xxx # 文件夹下所有文件都zgrep搜索,这种会显示文件名
find -type f | xargs zcat | grep xxx # 文件夹下所有文件都zgrep搜索,这种不会显示文件名
还有zless等命令也可以使用。
grep后面只能接文件,可以接*, 但不能接目录名。 如果要目录搜索,只能搭配find
文件查找 find
find . -name "*.gz"
输出一行一行的文件名/目录列表。每个文件名后都带着个换行\n
find -type f # 所有文件
find . -name "*.gz" -type f # 所有.gz文件
管道
顺序执行多条命令:command1;command2;command3; 简单的顺序指令可以通过 ;来实现
| 有条件的执行多条命令:which command1 && command2 | command3 |
&& : 如果前一条命令执行成功则执行下一条命令,如果command1执行成功(返回0),则执行command2
| :与&&命令相反,执行不成功时执行这个命令 |
$?: 存储上一次命令的返回结果
管道命令使用|作为界定符号,管道命令与上面说的连续执行命令不一样。
- 管道命令仅能处理standard output,对于standard error output会予以忽略。
less,more,head,tail...都是可以接受standard input的命令,所以他们是管道命令ls,cp,mv并不会接受standard input的命令,所以他们就不是管道命令了。 - 管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行。
###
管道命令使用|作为界定符号,管道命令与上面说的连续执行命令不一样。
- 管道命令仅能处理standard output,对于standard error output会予以忽略。
less,more,head,tail...都是可以接受standard input的命令,所以他们是管道命令ls,cp,mv并不会接受standard input的命令,所以他们就不是管道命令了。 - 管道命令必须要能够接受来自前一个命令的数据成为standard input继续处理才行。
ls -al /etc | less
xargs
xargs 使用该输入作为我们指定的命令的参数。如果我们没有给xargs指定特定的命令,则默认使用 echo。xargs 始终生成单行输出,即使输入的数据是多行的。
ls | xargs cat # 对每个文件进行cat,如果没有xargs就是对ls列表cat那cat没任何效果。