想给已存在的 screen 会话发送指令(不打开会话窗口),之前手动进行终止程序操作是使用 ctrl + c
,但是使用指令终止程序的话试了几种方法都不是很理想。
经过了一番网上冲浪,才找到了下面这篇文章,在指令中用 \003
代替了 Ctrl-C
。
一般来说,在linux shell中
ctrl-c 是发送 SIGINT 信号,
ctrl-z 是发送 SIGSTOP信号
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF
具体的可以通过stty -a来查看系统配置,如
[admin@user1 ~]$ stty -a
speed 38400 baud; rows 66; columns 252; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
常见的几个:
kill -SIGSTOP $pid # 相当于 ctrl-z
kill -SIGCONT $pid # 相当于 fg
kill -SIGINT $pid # 相当于 ctrl-c
在脚本实现可以用
echo -e ‘\00X’ 或 echo $’\00X’ #x表示十六进制数
如:
Ctrl-A 用 \001
Ctrl-B 用 \002
Ctrl-C 用 \003
Ctrl-D 用 \004
… …
Ctrl-Z 用 \032
如,要表示Ctrl-D,可以用
echo -e ‘\004’