什么是nohuphtml
nohup 全称:no hang up(不挂起)。也就是说,当前交互命令行退出的时候,程序还在运行。linux
语法android
nohup Command [Arg...] [ &]
最后的" &":表示后台运行,不霸占交互命令行
若是不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中。
若是当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
若是没有文件能建立或打开以用于追加,那么 Command 参数指定的命令不可调用。
若是标准错误是一个终端,那么把指定的命令写给标准错误的全部输出做为标准输出重定向到相同的文件描述符。
nohup命令提交做业时,指定输出文件:
nohup command > myout.file 2>&1 &
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
2>&1解释:
将标准错误(2)重定向到标准输出(&1),
标准输出(&1)再被重定向输入到myout.file文件中。
如:./startup.sh 2>&1 | tee startup.log
表示将执行startup.sh脚本后到标准输出和标准错误输出内容写入到startup.log文件中。tee 默认是覆盖的方式写入文件中,加-a表示追加。
最终解释:表示命令执行后退出交互命令行也不挂起,经过最后一个 &,表示后台运行,不霸占交互命令行,同时将标准输出和标准错误输出合并到myout.file文件中。
复制代码
怎么关闭此进程git
ps -ef |grep 关键字 |awk '{print $2}'|xargs kill -9
|grep 关键字:经过关键字过滤
|awk 'print $2' :以默认分隔符(空格)分割每行的列,只输入每行第二列的内容,即进程ID
|xargs:将全部行数据转为单行,并以空格分开,而后做为kill的参数
kill -9:完全杀死进程,进程参数为|xargs拼接的。
举例:
一、使用命令:"ps -ef" 获取全部进程
二、经过管道结合grep命令实现关键字过滤,如获取包含关键字"goole"进程:
命令:ps -ef |grep google
结果:
501 370 1 0 五09下午 ?? 0:00.13 /Applications/Google Chrome.app/Contents/Versions/73.0.3683.103/Google Chrome Framework.framework/Helpers/crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --database=/Users/hejunbin/Library/Application Support/Google/Chrome/Crashpad --metrics-dir=/Users/hejunbin/Library/Application Support/Google/Chrome --url=https://clients2.google.com/cr/report --annotation=channel= --annotation=plat=OS X --annotation=prod=Chrome_Mac --annotation=ver=73.0.3683.103 --handshake-fd=8
501 28410 28409 0 10:39下午 ?? 0:04.32 /Users/hejunbin/Library/Android/sdk/emulator/emulator64-crash-service -pipe com.google.AndroidEmulator.CrashService.28409 -ppid 28409 -data-dir /tmp/android-hejunbin/c40cfa4e-4abb-4b7a-8790-77cbdfd5ddb0
501 35764 34208 0 1:34下午 ttys005 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn google
三、经过管道加awk命令只显示进程的ID:
命令:ps -ef |grep google |awk '{print $2}'
结果:
370
28410
35798
四、经过管道加xargs命令将这些进程ID转为ps的进程ID集。
命令:ps -ef |grep google |awk '{print $2}' |xargs
结果:370 28410 35900
五、利用xargs命令调用ps命令,完全杀死指定的进程
命令:ps -ef |grep google |awk '{print $2}' |xargs ps -9
复制代码
ps命令:列出进程shell
参数以下:
-e 显示全部进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
复制代码
awk命令:文本处理工具数组
awk支持对记录和字段的处理,其中对字段的处理是grep和sed不能实现的,这也是awk优于两者的缘由之一。
在awk中,缺省的状况下老是将文本文件中的一行视为一个记录,而将一行中的某一部分做为记录中的一个字段。
为了操做这些不一样的字段,awk借用shell的方法,用1,2,3...这样的方式来顺序地表示行(记录)中的不一样字段。
特殊地,awk用0表示整个行(记录)。
不一样的字段之间是用称做分隔符的字符分隔开的。系统默认的分隔符是空格。
awk容许在命令行中用-F re的形式来改变这个分隔符。
事实上,awk用一个内置的变量RS来记忆这个分隔符。
awk中有好几个这样的内置变量,例如:
记录分隔符变量RS
当前工做的记录数NR
这些内置的变量能够在awk程序中引用或修改,例如,你能够利用NR变量在模式匹配中指定工做范围,也能够经过修改记录分隔符RS让一个特殊字符而不是换行符做为记录的分隔符。
例:显示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段:
awk -F % 'NR>=7,NR<=15 {print $1 $3 $7}' myfile
awk提供了有不少内置变量,其中ARG相关变量是文本处理中比较经常使用的。
ARGC:命令行参数个数(不包括awk的选项和awk的程序内容)。
ARGIND:当前正在处理的ARGV中的文件的索引值(同时处理多个文件时会用到)。
ARGV:命令行参数序列数组,下标从0开始。
复制代码
xargs命令:xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。bash
xargs 能够将管道或标准输入(stdin)数据转换成命令行参数,也可以从文件的输出中读取数据。
xargs 也能够将单行或多行文本输入转换为其余格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着经过管道传递给 xargs 的输入将会包含换行和空白,不过经过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它可以捕获一个命令的输出,而后传递给另一个命令。
之因此能用到这个命令,关键是因为不少命令不支持|管道来传递参数,而平常工做中有有这个必要,因此就有了 xargs 命令,例如:
find /sbin -perm +700 |ls -l #这个命令是错误的
find /sbin -perm +700 |xargs ls -l #这样才是正确的
xargs 通常是和管道一块儿使用。
命令格式:
somecommand |xargs -item command
参数:
-a file 从文件中读入做为sdtin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就中止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用全部的。
-t 表示先打印命令,而后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,通常是一行一行赋值给 {},能够用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则中止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。
复制代码
kill命令:杀掉进程app
kill [-s signal_name] pid ...
kill -l [exit_status]
kill -signal_name pid ...
kill -signal_number pid ...
signal_number 经常使用参数:
Some of the more commonly used signals:
1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
6 ABRT (abort)
9 KILL (non-catchable, non-ignorable kill) 完全杀死进程
14 ALRM (alarm clock)
15 TERM (software termination signal)
实例:kill -9 123456 (完全杀死进程ID为123456的进程)
复制代码