linux实用命令

查看所有用户的crontab任务

以root用户执行,cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

命令返回值

在控制台下,有一个特殊的环境变量 $?,保存着前一个程序的返回值 echo $?
那么如果返回的值不是 0,我们要怎么知道是那里出错了呢? 大多数的程序出错都会给出提示,如果没有提示的话,可以用 perror 这个程序来查看错误的信息,比如返回值是 2,我们可以运行:
$ perror 2
OS error code 2: No such file or directory

iotop - 简单的top类I/O监视器
pstree

一次服务器CPU占用率高的定位分析
http://www.cnblogs.com/zhengchunyuan/p/7908749.html

top -H -p pid命令查看进程内各个线程占用的CPU百分比
strace -T -r -c -p pid命令,作用是查看系统调用和花费的时间,epoll_wait虽然占用的调用时间多,但是他本身是个正常的阻塞调用
pstack pid 可以看到每个线程的调用堆栈,找到已经找出的占用CPU最高的那个线程,然后看他的调用堆栈,很容易看出在哪一步逻辑上导致了busy loop,

再使用trace -p tid看看线程的调用过程接着定位到代码,修复bug,找回被偷走的cpu。

curl

curl -H “Content-Type: application/json” -X POST --data ‘{“userID”:10001}’ http://localhost:8085/GetUserInfo

time 执行命令
real:(真正的,现实的),可认为程序的运行时间;
user:(用户),其为用户态,cpu运行的时间。程序运行分为核心态和用户态;
sys::(系统),系统运行时间。

real 并不一定等于user+sys

进程(Process)和线程(Thread)

进程 vs. 线程-廖雪峰
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319292979766bd3285c9d6b4942a8ea9b4e9cfb48d8000

进程、线程、多线程相关总结
https://www.cnblogs.com/fuchongjundream/p/3829508.html

杀掉多个进程组

ps -ef | grep php | grep -v grep | awk '{print $2}' | xargs kill -9

xargs接收管道前面传过来的字符

kill -9 `ps -ef | grep 'python wkr_main.py' | awk '{print $2}'`
kill -9 $(ps -ef | grep 'python wkr_main.py' | awk '{print $2}')

find—xargs以及find— -exec结合使用

find ./ -name te* -exec ls -l {} \;
find ./ -name te* | xargs ls -l
#利用反引号或$()
ll `find . -name "test*.log"`
 ll $(find . -name "test*.log")

在这里插入图片描述
没有找到任何文件,ls -l会返回当前文件夹的列表?
在这里插入图片描述

grep \t查询

每个文件查到一个即停止

grep -m 1 '^抖音'$'\t''' ./*
grep -m 1 '^抖音'$'\t''' ./*.jd*

脚本接收参数

python
sys.argv 类型list,第一个参数为脚本名(python后的第一个参数,文件名)
php
a r g c 参 数 数 量 , argc参数数量, argcargv参数数组,第一个参数为脚本名(php后的第一个参数,文件名)
shell
$* 所有参数(不包括文件名)
$0 文件名
$1 第一个参数

sed 命令:

p 打印行
d 删除
-i 修改文件内容

删除文件第一行:
sed '1d' filename
sed -i '1d' filename
删除文档的最后一行
sed -i '$d' <file>
sed '$d' <file>
删除文件中的第3行/3-5行
sed '3d' <file>
sed  '3,5d' <file>
删除文件中包含某个关键字开头的所有行
sed '/^Qq/d' <file>
删除文件中包含某个关键字的所有行
sed '/Qq/d' <file>
在文档指定行中增加一行

第一个用于搜出某行(替换成对应的文本),第二个表示要增加的内容
sed '/* /a*' <file>

只打印第三行
sed -n '3p' <file>
只查看文件的第3行到第9行
sed -n '3,9p'  <file>
sed ‘/pattern/!p’ infile //匹配pattern的行不输出 
sed -n ‘1,2p’ infile //print line 1 to 2 
sed -n ‘2,$p’ file //print line 2 to end of line
sed -n 7,8p nohup.out
sed -n 7p nohup.out

一、从第3行开始,显示10行。即显示第3-12行
cat filename | tail -n +3 | head -n 10

二、显示3-12行
cat filename| head -n 12 | tail -n +10
注意两种方法的顺序
分解:
tail -n 10:显示最后10行
tail -n +10:从第10行开始显示,即显示10行以后的
head -n 10:显示前面10行
三、用sed命令
sed -n '5,10p' filename 这样就可以只查看文件的第5行到第10行。

shell 调用redis

echo 'get key' | redis-cli -h 'host' -p 6379 -a 'passwd' -n 0

删除文件

/usr/bin/rm -f `/usr/bin/find /data/logs/app -maxdepth 1 -mtime +4 -type f`
curl -H "Content-Type:application/json" -X POST -d '{"member_id":"152232","device_code":"dddddd","tk":"kkkkkk","tuid":"tttttt","group_ids":[1,2,13],"caller_id":1002}' http://a.com/group_match/hybrid

按照日期建文件(定时任务里也可用)
echo ‘aa’ > test.log. ( d a t e − d l a s t − d a y + " e c h o ′ a a ′ > t e s t . l o g . (date -d last-day +"%Y%m%d%H%M%S") echo 'aa' > test.log. (datedlastday+"echoaa>test.log.(date +%Y%m%d%H%M%S)

删除文本中最后一列

awk '{$NF="";print}' 1.txt

获取最后一列
awk '{print $NF}' filename

打印第三行后的记录:
awk ‘NR>3{print}’ file.txt
打印第三列后的字段(假设字段间是以空格或TAB分隔):
awk ‘{$1=$2=$3="";print}’ file.txt

查看内存占用

其中rsz是是实际内存
ps -e -o ‘pid,comm,args,pcpu,rsz,vsz,stime,user,uid’

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值