3
我想寫一個快速的bash腳本來發信號通過腳本檢測到的某個條件下的程序,並強制使用習慣我使用一些bin utils的完整路徑,即/bin/rm
和/bin/kill
代替rm
和kill
。隨着特別kill
,不過,我注意到在有效的信號,我可以送一個區別,它的困惑我:爲什麼/ bin/kill的有效信號與kill不同?
[[email protected]]# which kill
/bin/kill
[[email protected]]# /bin/kill -l
HUP INT QUIT ILL ABRT FPE KILL SEGV PIPE ALRM TERM USR1 USR2 CHLD CONT
STOP TSTP TTIN TTOU TRAP IOT BUS SYS STKFLT URG IO POLL CLD XCPU XFSZ
VTALRM PROF PWR WINCH UNUSED
[[email protected]]# kill -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]]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
顯然修正是隻使用kill
,但爲什麼他們不同,如果which kill
無論如何解析爲/bin/kill
?
在''bash''中,'type -a CMD'告訴你所有可用的'CMD':'PATH'中的內建函數,別名,函數和* any *目錄。在我的一個Linux機器上,它將'kill'報告爲內建的'/ bin/kill'和'/ usr/bin/kill'。 – chepner
不錯,謝謝! 「type -a」工作得很好,我不知道「kill」是內置的。 – rutgersmike
對於瑣事,它必須是內建的,讓'kill%1'獲得第一份工作的pid。 –