kill可以发出这样的指令吗?我的主要目的是要能写在bash脚本中
PHPz2017-04-17 11:01:04
在linux中,与进程的控制交互是通过信号来实现的,以下是几种常见的信号量
SIGINT: 当用户按某些终端键时, 引发终端产生的信号. 如Ctrl+C键, 这将产生中断信号(SIGINT). 它将停止一个已失去控制的程序.
SIGSEGV: 由硬件异常(除数为0, 无效的内存引用等等)产生的信号. 这些条件通常由硬件检测到, 并将其通知内核. 然后内核为该条件发生时正在运行的进程产生该信号.
SIGURG: 在网络连接上传来带外数据时产生.
SIGPIPE: 在管道的读进程已终止后, 一个进程写此管道时产生. 当类型为SOCK_STREAM的socket已不再连接时, 进程写到该socket也产生此信号.
SIGALRM: 进程所设置的闹钟时钟超时的时候产生.
SIGABRT: 进程调用abort函数时产生此信号, 进程异常终止.
SIGCHLD: 在一个进程终止或停止时, 它将把该信号发送给其父进程. 按系统默认, 将忽略此信号. 如果父进程希望被告知其子进程的这种状态改变, 则应该捕捉此信号. 通常是用wait系列函数捕捉, 如果不wait的话, 子进程将成为一个僵尸进程.
SIGIO: 此信号指示一个异步I/O事件.
SIGSYS: 该信号指示一个无效的系统调用.
SIGTSTP: 交互式停止信号. Ctrl+Z, 按下时, 终端将产生此信号, 进程被挂起.
你说的control+c实际上是终端把一个SIGINT信号发给了进程,而如果你用kill指令而不带任何参数,实际上是发送了一个SIGKILL信号。但是kill指令是可以发送指定信号的,比如你要发一个SIGINT信号,可以这样
kill -s SIGINT process_name
巴扎黑2017-04-17 11:01:04
ctroll+c 是终止当前的前台进程。写在脚本里不行~~因为你脚本里的命令都是串行的,一旦挂在后台了,ctrl+c也没用了。
不知道你具体需求是啥,如果是要kill掉某进程,还是用
kill `ps |grep "process name"|grep -v grep|awk '{print $1}'`
参考这个问题:http://segmentfault.com/question/86/%...