当前位置:网站首页>Additional Features for Scripting
Additional Features for Scripting
2022-08-01 23:11:00 【Dreamer DBA】
1.1 "Daemon-izing" Your Script
Use the following to invoke your script, run it in the background, and still allow yourself to log out:
[[email protected] test]$ nohup mydaemonscript 0<&- 1>/dev/null 2>&1 &
[1] 209178
[[email protected] test]$ nohup mydaemonscript >>/var/log/myadmin.log 2>&1 <&- &
[2] 209179
[1] Exit 127 nohup mydaemonscript 0>&- > /dev/null 2>&1
[[email protected] test]$ -bash: /var/log/myadmin.log: Permission denied
[2]+ Exit 1 nohup mydaemonscript >> /var/log/myadmin.log 2>&1 0>&-
[[email protected] test]$ But what about STDIN? The cleanest way to deal with STDIN is to close the file descriptor. The bash syntax to do that is like a redirect, but with a dash for the filename (0<&- or <&-).
We use the nohup command so that the script is run without being interrupted by a hangup signal when we log off.
1.2 Reusing Code with Includes and Sourcing
[[email protected] test]$ sh -x use_prefs.sh
+ source /home/maxwell/shelllearning/test/myprefs.cfg
++ SCRATCH_DIR=/var/tmp
++ IMG_FMT=png
++ SND_FMT=ogg
+ cd /var/tmp
+ echo You prefer png image files
You prefer png image files
+ echo You prefer ogg sound files
You prefer ogg sound files
[[email protected] test]$ cat myprefs.cfg
SCRATCH_DIR=/var/tmp
IMG_FMT=png
SND_FMT=ogg
[[email protected] test]$ cat use_prefs.sh
#!/bin/bash
#
# use the user prefs
#
source $HOME/shelllearning/test/myprefs.cfg
cd ${SCRATCH_DIR:-/tmp}
echo You prefer $IMG_FMT image files
echo You prefer $SND_FMT sound files
[[email protected] test]$ 1.5 Using Functions: Parameters and Return Values
# define the function:
function max ( )
{ ... }
#
# call the function:
#
max 128 $SIM
max $VAR $CNT[[email protected] test]$ sh -x max 128 $SIM
[[email protected] test]$ echo $BIGR
[[email protected] test]$ cat max
#!/bin/bash
#cookbook filename: func_max
# define the function:
function max ()
{
local HIDN
if [ $1 -gt $2 ]
then
BIGR=$1
else
BIGR=$2
fi
HIDN=5
}
[[email protected] test]$ 1.6 Trapping Interrupts
Use the trap utility to set signal handlers. First, use trap -l (or kill -l) to list the signals you may trap. They vary from system to system:
[[email protected] test]$ trap -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[[email protected] test]$ [[email protected] test]$ cat hard_to_kill.sh
#!/bin/bash -
trap ' echo "You got me! $?" ' ABRT EXIT HUP INT TERM QUIT
trap ' echo "Later... $?"; exit ' USR1
sleep 120
[[email protected] test]$ sh -x hard_to_kill.sh
+ trap ' echo "You got me! $?" ' ABRT EXIT HUP INT TERM QUIT
+ trap ' echo "Later... $?"; exit ' USR1
+ sleep 120
^C++ echo 'You got me! 130'
You got me! 130
+ echo 'You got me! 130'
You got me! 130
[[email protected] test]$ sh -x hard_to_kill.sh &
[1] 209366
[[email protected] test]$ + trap ' echo "You got me! $?" ' ABRT EXIT HUP INT TERM QUIT
+ trap ' echo "Later... $?"; exit ' USR1
+ sleep 120
[[email protected] test]$ kill -USR1 %1
[[email protected] test]$ User defined signal 1
++ echo 'Later... 138'
Later... 138
++ exit
+ echo 'You got me! 0'
You got me! 0
[1]+ Done sh -x hard_to_kill.sh
[[email protected] test]$ sh -x hard_to_kill.sh &
[1] 209374
[[email protected] test]$ + trap ' echo "You got me! $?" ' ABRT EXIT HUP INT TERM QUIT
+ trap ' echo "Later... $?"; exit ' USR1
+ sleep 120
[[email protected] test]$ kill %1
[[email protected] test]$ Terminated
++ echo 'You got me! 143'
You got me! 143
+ echo 'You got me! 143'
You got me! 143
[1]+ Exit 143 sh -x hard_to_kill.sh
[[email protected] test]$ 边栏推荐
- Interpretation of the paper (GSAT) "Interpretable and Generalizable Graph Learning via Stochastic Attention Mechanism"
- When using DocumentFragments add a large number of elements
- 加载字体时避免隐藏文本
- String - Trie
- TCP 可靠吗?为什么?
- Chapter 11 Working with Dates and Times
- 还在纠结报表工具的选型么?来看看这个
- Check if point is inside rectangle
- SRv6 L3VPN的工作原理
- PHP算法之有效的括号
猜你喜欢

C#大型互联网平台管理框架源码:基于ASP.NET MVC+EF6+Bootstrap开发,支持多数据库

03. GO language variable definition, function

Prufer sequence

华为无线设备配置全局双链路冷备份(AC全局配置方式)

y84.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十五)

sys_kill系统调用

简单3D渲染器的制作
![Thesis understanding [RL - Exp Replay] - Experience Replay with Likelihood-free Importance Weights](/img/f1/9824f32dd4fe4b3e94af3f945b1801.png)
Thesis understanding [RL - Exp Replay] - Experience Replay with Likelihood-free Importance Weights

(Translation) How the contrasting color of the button guides the user's actions

Wechat Gymnasium Appointment Mini Program Graduation Design Finished Work (4) Opening Report
随机推荐
【C补充】链表专题 - 单向链表
Small application project works WeChat stadium booking applet graduation design of the finished product (1) the development profile
联邦学习入门
TCP 可靠吗?为什么?
y84.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十五)
Error creating bean with name ‘dataSource‘:Unsatisfied dependency expressed through field ‘basicPro
Wechat Gymnasium Appointment Mini Program Graduation Design Finished Work (4) Opening Report
10年稳定性保障经验总结,故障复盘要回答哪三大关键问题?|TakinTalks大咖分享
别看了,这就是你的题呀
npm npm
leetcode刷题
chrome copies the base64 data of an image
研发团队数字化转型实践
CAKE:一个用于多视图知识图谱补全的可扩展性常识感知框架
避免使用 <b>、<i>、<s> 和 <u> 标签
Avoid , ,
, and tagsPHP算法之最接近的三数之和
复现gallerycms字符长度限制短域名绕过
CF1705D Mark and Lightbulbs
UML diagram of soft skills