Linux常用命令

2022/05/05 Linux 共 3587 字,约 11 分钟

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没任何效果。

Search

    Table of Contents