Linux
啟動、後台和服務程序使用什麼環境和憑證
- 啟動腳本(啟動時)
- 在後台執行(或發送到)後台的程序(例如使用 SSH -fN 時)
- 服務
- 等等
他們將使用什麼 $path 變數?什麼證件?還有什麼我應該知道的嗎?
嘗試用Google搜尋它,並在論壇中發現了很多零散的資訊,但沒有提供清晰/完整的資訊。
僅供參考,我正在執行與 Debian 幾乎相同的 Raspbian。
根據程序啟動的階段,它們可能根本沒有任何環境變數,從父程序繼承它們或使用啟動 (init.d) 腳本中的變數。
您可以通過檢查找到程序所具有的環境變數
/proc/$PID_OF_PROCESS/environ
:root@frisbee:~# xargs -n 1 -0 < /proc/1243/environ UPSTART_INSTANCE= UPSTART_JOB=rsyslog TERM=linux PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin UPSTART_EVENTS=filesystem PWD=/
/proc/
通過檢查程序的目錄,您可以找到有關程序的大量資訊。例如:
- 程序的目前工作目錄通過符號連結到
/proc/$PID/cwd
:root@frisbee:~# ls -l /proc/1243/cwd lrwxrwxrwx 1 root root 0 apr 30 11:20 /proc/1243/cwd -> /
- 程序所在的二進製文件由以下
exec()
符號連結/proc/$PID/exe
:root@frisbee:~# ls -l /proc/1243/exe lrwxrwxrwx 1 root root 0 apr 30 11:19 /proc/1243/exe -> /usr/sbin/rsyslogd
- 文件描述符(文件 + 網路連接 + 程序間通信套接字)可以在以下位置找到
/proc/$PID/fd/
:root@frisbee:/proc/1243/fd# ls -l total 0 lrwx------ 1 root root 64 apr 30 11:20 0 -> socket:[12362] l-wx------ 1 root root 64 apr 30 11:20 1 -> /var/log/syslog l-wx------ 1 root root 64 apr 30 11:20 2 -> /var/log/kern.log lr-x------ 1 root root 64 apr 30 11:20 3 -> /proc/kmsg l-wx------ 1 root root 64 apr 30 11:20 4 -> /var/log/auth.log l-wx------ 1 root root 64 apr 30 11:39 5 -> /var/log/ufw.log
ps
您可以通過檢查輸出找到程序正在執行的使用者:root@frisbee:/proc/1243# ps -fp 1243 UID PID PPID C STIME TTY TIME CMD syslog 1243 1 0 11:19 ? 00:00:01 rsyslogd -c5
還有什麼我應該知道的嗎?
很多,但你必須自己定義這些東西並找到它們或提出另一個問題。