Linux命令行与shell脚本编程之笔记(7)

Linux命令行与shell脚本编程之笔记(7)目录 66 人工输入 Linux 进程信号 ctrl c ctrl z 67 捕获信号 trap 68 显示脚本的 PID 69 退出终端后继续运行 nohup 70 重启停止的作业 bg 71 把后台作业带到前台 fg 72 调整谦让度 nice renice 66 人工输入 Linux 进程信号 ctrl c ctrl z

大家好,我是讯享网,很高兴认识大家。

目录

66. 人工输入Linux进程信号 ctrl-c ctrl-z

67. 捕获信号 trap

68. 显示脚本的 PID  $$

69. 退出终端后继续运行 nohup

70. 重启停止的作业  bg

71. 把后台作业带到前台  fg

72. 调整谦让度  nice  renice


66. 人工输入Linux进程信号 ctrl-c ctrl-z


讯享网

  •  Ctrl-C  生成SIGINT信号(2),中止shell中当前运行的进程。
  •  Ctrl-Z  生成SIGTSTP信号(18),  让程序暂停,继续保留在内存中,并能从上次停止的位置继续运行

67. 捕获信号 trap

trap命令,允许你来指定shell脚本要监看并从shell中拦截的Linux信号。trap命令的格式是:

trap commands signals

讯享网
讯享网#!/bin/bash # Testing signal trapping trap "echo ' Block ctrl-c' " SIGINT echo This is a test script count=1 while [ $count -le 10 ] do echo "Loop #$count" sleep 1 count=$[ $count + 1 ] done echo "This is the end of the test script"

 此时 Ctrl-C (SIGINT), 就不生效了。

 trap也可以用来捕捉脚本退出事件,这对于 意外退出的情况是很好的监查方式

#!/bin/bash trap "echo ' Goodbye... Exit status: $?' " EXIT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$[ $count + 1 ] done

 trap可以被修改,以及被取消。取消方法:

讯享网trap -- SIGXXX
#!/bin/bash trap "echo ' Sorry... Ctrl-C is trapped.'" SIGINT count=1 while [ $count -le 5 ] do echo "Loop #$count" sleep 1 count=$[ $count + 1 ] done trap "echo ' I modified the trap!'" SIGINT count=1 while [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$[ $count + 1 ] done echo "The script ID: $$" trap -- SIGINT echo "I just removed the trap" count=1 while [ $count -le 5 ] do echo "Third Loop #$count" sleep 1 count=$[ $count + 1 ] done 


68. 显示脚本的 PID  $$

讯享网#!/bin/bash echo "The script ID: $$" 

 


69. 退出终端后继续运行 nohup

nohup命令运行了另外一个命令来阻断所有发送给该进程的SIGHUP信号(1)。简单的讲,此时就算把终端退出了,脚本也会在后台继续运行。

由于nohup命令会解除终端与进程的关联,进程也就不再同STDOUT和STDERR联系在一起。为了保存该命令产生的输出,nohup命令会自动将STDOUT和STDERR的消息重定向到本地的一个名为nohup.out的文件中。


70. 重启停止的作业  bg

要以后台模式重启一个作业(SIGTSTP信号),可用bg命令加上作业号(jobs)

 不加jobs号的话,bg恢复默认作业(带+号的job)。

$ ./test10.sh > test10a.out & [1] 1950 $ ./test10.sh > test10b.out & [2] 1952 $ ./test10.sh > test10c.out & [3] 1955 $ $ jobs -l [1] 1950 Running ./test10.sh > test10a.out & [2]- 1952 Running ./test10.sh > test10b.out & [3]+ 1955 Running ./test10.sh > test10c.out &

71. 把后台作业带到前台  fg


72. 调整谦让度  nice  renice

nice命令允许你设置命令启动时的调度优先级,不过只能让命令以更低的优先级运行。

nice -n prio

讯享网$ nice -n 10 ./test4.sh > test4.out & # 调整谦让度值到10 $ nice -10 ./test4.sh > test4.out & # 调整谦让度值到10

renice命令允许你设置已经在运行的命令的调度优先级。它允许你指定运行进程的PID来改变它的优先级。

renice -n prio -p PID

 

小讯
上一篇 2025-01-17 08:08
下一篇 2025-02-23 20:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/118427.html