Linux

啟動、後台和服務程序使用什麼環境和憑證

  • September 29, 2016
  • 啟動腳本(啟動時)
  • 在後台執行(或發送到)後台的程序(例如使用 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

還有什麼我應該知道的嗎?

很多,但你必須自己定義這些東西並找到它們或提出另一個問題。

引用自:https://unix.stackexchange.com/questions/127282