查看所有用户的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参数数量,
argc参数数量,argv参数数组,第一个参数为脚本名(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.
(date−dlast−day+"echo′aa′>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’