释放内存
使用sync命令做同步,以确保文件系统的完整性,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。
sync
echo 3 > /proc/sys/vm/drop_caches
释放缓存数字参数说明
0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存
多文件复制、剪切
对过多的文件进行复制或剪切时会报错:-bash: /bin/cp: Argument list too long
解决方法:使用xargs
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替
#将from_folder下的文件剪切到to_folder文件夹下
ls from_folder/* | xargs -i mv {} to_folder/
find from_folder/ -name '*.*' |xargs mv --target-directory=to_folder/
#复制前一万个文件到 tmp 下
ls |head -n 10000 |xargs -i cp {} /tmp
#复制后一万个文件到 tmp 下
ls |tail -n 10000 |xargs -i cp {} /tmp
重定向
标准输出默认是打印到控制台,如果要导入到文件,就需要使用>或>>,>和>>都是重定向输出,> 会覆盖已有的文件内容,而>>会附加到已有内容之后。
< 和 << 是输入重定向符号,从文件中读取内容。
标准输入(standard input)的文件描述符是 0
标准输出(standard output)的文件描述符是 1
标准错误(standard error)的文件描述符是 2
1> 指标准信息输出路径(也就是默认的输出方式)
2> 指错误信息输出路径
2>&1是把错误输出导入(合并)到标准输出流中
例:cat >>filetest 2>&1 <<MAYDAY 就是从MAYDAY中读取文件内容,将标准输出与错误输出一并送入filetest文件中。
vim删除
字符删除
x 删除光标所在处字符
X 删除光标所在前字符
单词删除
dw 删除到下一个单词开头
de 删除到本单词末尾
dE 删除到本单词末尾包括标点在内
db 删除到前一个单词
dB 删除到前一个单词包括标点在内
很明显,d是delete的缩写,而上面的x则是老式的清除意思
要注意的是e b会忽略标点,如don't,它们会把这当做三个单词don、‘ 和 t 来删除
而大写的E B则不会
行删除
dd 删除一整行,3dd代表删除三行
D d$ 删除光标位置到本行结尾
d0 删除光标位置到本行开头
删除命令需要配合移动命令才能发挥更多作用
查找文件并将结果输出到1.txt中:
包含路径:
find -name '*QC*' > 1.txt
不包含路径:
find -name '*QC*' -exec cp {} ./1/ \;
find -name "Coverage*" |xargs -i cp {} ./1
替换文件中的字符:
sed -i 's/test/T7M816-D/g' *sh
批量操作
替换文件内容:
for i in `ls`; do mv $i `echo $i |sed 's/aaa/bbb/g' |sed 's/aaa/bbb/g'`; done
批量建文件夹:
for i in `ls`; do mkdir `echo $i |sed 's/_R1_001.fastq.gz//'`; done
作业管理
后台运行
nohup <COMMAND> &
nohup:永久执行,即使断开SSH也不影响运行,标准输出改到当前目录下的nohup.out文件。
&:后台运行,结果仍会输出到屏幕上。
(<command> &)
使用括号表示该进程的父ID为1,因此不属于当前终端的子进程,从而不受HUP信号影响。
将命令后台运行:
nohup/setsid 是临时需要时最方便的方法
disown 补救当前已经在运行了的作业
screen 在大批量操作时不二的选择
查看后台作业状态
jobs 参数:
-l:列出PID
-r:列出仅在后台运行的作业
-s:仅列出暂停的作业
jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)
过滤掉含有“grep”的进程
ps -aux| grep chat.js| grep -v 'grep'
查找并杀死进程
ps -ef | grep ***** | awk '{print $2}' | xargs kill -9
ps -ef | grep ***** | awk '{cmd = "kill "$2; system(cmd)}'
ps -ef | grep ***** | awk '{print "kill " $2}' | sh
其他命令
将前台作业放到后台并暂停:
ctrl + z
运行后台暂停的作业:
bg
bg <%jobnumber>
将后台作业拿到前台运行:
fg
fg <%jobnumber>
终结进程:
kill <PID>
kill <%jobnumber>
批量删除:
qstat -u AGIS |sed 1,3d |awk '{print $1}' |while read xx;do qdel $xx;done
使用命令合并两个pdf文件
pdfunite a.pdf b.pdf c.pdf abc.pdf
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf
#an improved version for low resolution PDFs:
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf
gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf in3.pdf ...
查看服务器参数
查看CPU型号:
cat /proc/cpuinfo
查看物理CPU个数:
grep 'physical id' /proc/cpuinfo |sort -u |wc -l
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
每个CPU有多少核心:
grep 'core id' /proc/cpuinfo |sort -u |wc -l
cat /proc/cpuinfo |grep "cores"|uniq
查看逻辑CPU个数:
cat /proc/cpuinfo |grep "processor"|wc -l
查看线程数:
grep 'processor' /proc/cpuinfo | sort -u | wc -l
查询当前整个系统已用的线程或进程数:
pstree -p | wc -l
查看版本当前操作系统内核信息
uname -r
uname -a
查看当前操作系统版本信息
cat /proc/version
lsb_release -a
跨服务器传输数据:
#不加密传输
rcp -r git/ yuanyuan.zhang@10.86.2.10:/Data/testresults/qPCR
#加密传输
scp -r git/ yuanyuan.zhang@10.86.2.10:/Data/testresults/qPCR
查看所有用户组:
cat /etc/group | grep AGIS
查看节点使用内存情况:
qhost
free -g
显示瞬间行程的动态
ps
#以用户为主的格式来显示程序状况
ps u
定时任务
查看/var/log/cron.log文件是解决定时任务出错的重要途径。
crontab <command>
crontab <参数>
-u :只有 root 才有权限执行这个任务,也就是帮其他使用者创建/移除 crontab 定时任务
-e :编辑 crontab 的内容
-l :显示 crontab 的内容
-r :移除所有 crontab 的内容,若仅要移除某一项,请用 -e 编辑
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时0~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令