我現在面臨一個奇怪的,很奇怪的,行爲的進程名時,shell腳本文件的編碼是不同的進程名。編碼和
的方案是如下因素:
兩個文件 - caller.sh(ASCII文本) - executor.sh(UTF-8 Unicode文本)
# caller.sh
#!/bin/bash
/soft/executer.sh &
sleep 60
執行後「caller.sh &」,將‘PS’命令返回命名爲兩個過程‘caller.sh’:
PID TTY TIME CMD
19566 pts/7 00:00:00 bash
22699 pts/7 00:00:00 caller.sh
22690 pts/7 00:00:00 caller.sh
22694 pts/7 00:00:00 ps
但是,如果改變了‘caller.sh’編碼到「諜影重重-再次shell腳本文本可執行文件」(在Windows盒子保存並轉移到Linux)的命令ps開始正確顯示:
PID TTY TIME CMD
19566 pts/7 00:00:00 bash
22689 pts/7 00:00:00 caller.sh
22694 pts/7 00:00:00 ps
22690 pts/7 00:00:00 executer.sh
有人能解釋編碼和進程名/ bashs之間的關係?
p.s:dos2unix不能解決問題!
感謝
它不是'!#/ bin/bash',而是'#!/ bin/bash' – devnull
對不起,這是一個錯字 – RLM
'executor.sh'如何接收比'caller.sh '如果它是從'caller.sh'中調用的?它看起來像22685是一個單獨運行的實例,而不是'caller.sh'實例的子進程。 – chepner