我在 Linux 机器上安装了Eucalyptus,我注意到对于 eucalyptus 用户拥有的进程,ps报告的是 userid 而不是用户名。例如:
$ sudo -i -u eucalyptus
$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
107 29764 0.0 0.0 19376 2104 pts/2 S 11:43 0:00 -bash
107 30198 0.0 0.0 15256 1180 pts/2 R+ 11:44 0:00 ps u
Run Code Online (Sandbox Code Playgroud)
什么会导致这种情况发生?
请注意,/etc/passwd 中有一个正确的条目:
$ grep eucalyptus /etc/passwd
eucalyptus:x:107:115::/var/lib/eucalyptus:/bin/bash
Run Code Online (Sandbox Code Playgroud)
另请注意ls属性报告桉树帐户的文件所有权:
$ touch foo
$ ls -l foo
-rw-r--r-- 1 eucalyptus eucalyptus 0 2010-09-23 11:47 foo
Run Code Online (Sandbox Code Playgroud) 如何格式化ps -p命令的输出?
为了不给我看这样的东西:
PID TTY TIME CMD
Run Code Online (Sandbox Code Playgroud)
但只是PID。
我正在使用 Linux。
我一直都知道 init 进程是所有进程的祖先。为什么进程 2 的 PPID 为 0?
$ ps -ef | head -n 3
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 May14 ? 00:00:01 /sbin/init
root 2 0 0 May14 ? 00:00:00 [kthreadd]
Run Code Online (Sandbox Code Playgroud) 我有一个服务,保持某个端口打开。
我正在获取数据,我既不希望也不想得到,我正试图确定这些数据的来源。那么如何找到哪个进程将数据发送到特定端口,而不是哪个进程正在侦听。
我对问题中提到的概念比较陌生,从不同来源阅读它们只会使它们更加混乱。所以这是我到目前为止的理解:
当我们获得文件的权限时,它们看起来像这样:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Run Code Online (Sandbox Code Playgroud)
我们假设用户user2谁是该组中users试图执行file.bin。如果未设置 setuid 位,则意味着 的 RUID 和 EUIDfile.bin都等于 的 UID user2。但是由于设置了 setuid 位,这意味着 RUID 现在等于 的 UID user2,而 EUID 是文件所有者的 UID,user1。
我的问题是:
root?是否root与所有者具有相同的权限?或者我们是否需要在权限列表中单独的条目root?如果我关闭启动某个进程的虚拟终端,输出是直接转到/dev/null,还是会以某种方式污染内存?
无论如何,我可以在此之后的任何时候获取输出以继续阅读吗?
[编辑]:那么,否认一个过程的那一刻是否有效地结束了我控制其输出的权力?
我还注意到,如果我否认一个停止的进程,起初一切似乎都很正常:它既不会终止,也不会显示在作业中。但是,如果我退出(并且我不是说关闭终端,只是从 退出su,例如),该过程将终止。尽管如此,后台运行的被拒绝的进程可以保持运行。
我想获得从$pid. 这是我想出的最简单的方法:
pstree -p $pid | tr "\n" " " |sed "s/[^0-9]/ /g" |sed "s/\s\s*/ /g"
Run Code Online (Sandbox Code Playgroud)
是否有任何命令或任何更简单的方法来获取所有后代进程的完整列表?
我一直在学习一些调度概念。目前我的理解如下。
nice的优先级值可以在-20到+20的范围内。较高的正值表示该进程具有较低的优先级。-如本答案here中所述。这主要是因为实时进程比非实时进程具有更高的优先级,并且niceness 值不适用于它们。chrt来查看进程的实时属性。 对于实时过程,chrt给出的输出为,
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Run Code Online (Sandbox Code Playgroud)
正如我们在进程5 中看到的,优先级是 99,这是最高的。此外,调度策略是SCHED_FIFO
现在,对于非实时过程,chrt给出的输出为,
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Run Code Online (Sandbox Code Playgroud)
正如我们所见,进程22383的优先级为 0,调度策略为SCHED_OTHER。
问题
SCHED_OTHER非实时进程之外,我是否可以设置其他一些调度算法?从这里,我还看到我可以修改正在运行的进程的属性,
chrt -p prio pid …Run Code Online (Sandbox Code Playgroud)我知道程序有两个“级别”:用户空间和内核空间。
我的问题是:我只想看到内核程序,或者更好:内核空间上的程序。
这种方法是否正确?
ps -ef|grep "\["
root 1 0 0 20:23 ? 00:00:00 init [4]
root 2 0 0 20:23 ? 00:00:00 [kthreadd]
root 3 2 0 20:23 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 20:23 ? 00:00:00 [kworker/0:0H]
root 7 2 0 20:23 ? 00:00:06 [rcu_sched]
root 8 2 0 20:23 ? 00:00:00 [rcu_bh]
root 9 2 0 20:23 ? 00:00:00 [migration/0]
root 10 2 0 20:23 ? 00:00:00 [migration/1]
root 11 2 0 20:23 ? 00:00:00 [ksoftirqd/1]
root …Run Code Online (Sandbox Code Playgroud) 我想看看我的应用程序服务器文件夹中发生了什么,即进程 x 更改了哪些*.war文件,或者在过去 x 分钟内更改了(替换/创建)哪些文件。
Linux 中是否有工具可以帮助解决此问题?
process ×10
ps ×3
files ×2
disown ×1
init ×1
job-control ×1
kernel ×1
linux ×1
linux-kernel ×1
monitoring ×1
networking ×1
permissions ×1
root ×1
scheduling ×1
setuid ×1
shell ×1
terminal ×1