我需要解决一些与 Unix 系统上的环境变量相关的问题。
在 Windows 上,我可以使用 ProcessExplorer 之类的工具来选择特定的进程并查看每个环境变量的值。
我怎样才能在 Unix 上完成同样的事情?echoing和envcmd 只显示当前的值,但我想查看正在运行的进程当前使用的值。
我正在通过 SSH 连接到一台 Linux 机器,并且我正在尝试运行一个重型 bash 脚本来进行文件系统操作。预计它会持续运行数小时,但由于互联网连接问题,我无法让 SSH 会话保持打开状态。
我怀疑使用后台运算符和符号 ( &)运行脚本是否会奏效,因为我尝试过,后来发现该过程未完成。如何注销并保持进程运行?
我正在 ubuntu 上运行 Rails 堆栈。
当我 ps -AF 时,我得到了一个由 apache 模块设置的描述性进程名称,例如
00:00:43 Rails: /var/www...
这对于诊断负载问题非常有帮助。
但是当我登顶时,同样的过程简单地显示为
ruby
有没有办法让 ps -AF 进程名称在顶部?
我想启动进程(例如 myCommand)并获取它的 pid(以允许稍后杀死它)。
我试过 ps 并按名称过滤,但我无法按名称区分进程
myCommand
ps ux | awk '/<myCommand>/ {print $2}'
Run Code Online (Sandbox Code Playgroud)
因为进程名称不是唯一的。
我可以通过以下方式运行进程:
myCommand &
Run Code Online (Sandbox Code Playgroud)
我发现我可以通过以下方式获得这个 PID:
echo $!
Run Code Online (Sandbox Code Playgroud)
有没有更简单的解决方案?
我很乐意执行 myCommand 并通过一行命令获取其 PID。
我的一个同事最近遇到了一个问题,一个应该已经死亡的进程仍然绑定到一个网络端口,阻止其他进程绑定到该端口。具体来说,netstat -a -b正在报告一个名为SystemPID 4476的进程打开了端口 60001,除了不存在具有 PID 4476 的进程,至少据我所知。
进程资源管理器和任务管理器没有列出 PID 4476(尽管还有另一个进程以SystemPID 4命名,它有自己的一组 TCP 连接,不包括 60001)。 taskkill /PID 4476还报告说找不到 PID 4476。
有没有办法杀死这个神秘的系统进程来释放它当前绑定的端口?什么会导致这种情况发生?怎么会有任务管理器、进程资源管理器和 taskkill 都不知道的进程?重新启动设法解决了这个问题,但我想知道是否有办法在不重新启动的情况下解决这个问题。
有没有办法按进程开始时间对 ps 输出进行排序,所以最新的是在顶部或底部?
在 Linux 上?
在 SysV5 上?
在 Mac 上?
是否可以将为进程分配的当前内存(通过 PID)转储到文件中?或者以某种方式阅读它?
$ ps | grep django
28006 ttys004 0:01.12 /usr/bin/python bin/django celeryd --beat
51393 ttys005 0:01.45 /usr/bin/python bin/django celeryd -l INFO
51472 ttys005 0:01.29 /usr/bin/python bin/django celeryd -l INFO
51510 ttys005 0:01.89 /usr/bin/python bin/django celeryd -l INFO
51801 ttys005 0:01.83 /usr/bin/python bin/django celeryd -l INFO
53470 ttys005 0:03.97 /usr/bin/python bin/django celeryd -l INFO
53780 ttys005 0:00.00 grep django
Run Code Online (Sandbox Code Playgroud)
有没有办法防止报告最后一个进程(即与我的 ps 命令同时启动的 grep)?
(我开始尝试想出一个匹配文字但不匹配自身的正则表达式,但这似乎,嗯,不是正确的方法......)
你使用维基格式吗?如果有,是什么产品?(MediaWiki、Confluence、Sharepoint 等)
您是否创建了知识库?(面向问题/解决方案的简短文档。)
您在创建有效的文档时遇到了哪些挑战,因此您在休假时不会接到电话?
对我来说,我发现完成文档通常涉及一定程度的组织“惯性”。似乎是不同类型的人可以完成一项任务,然后考虑他们如何完成任务并描述它以便其他人可以完成 - 对你来说是一种“变元”的力量,并不是每个人都愿意这样做。
更新
到目前为止的答案包括
编辑:你不是用你的监控系统隐式记录你的网络吗?Nagios 一直鼓励使用parent指令来反映您的网络结构,notes_url指令旨在允许您链接到 wiki 或其他基于浏览器的文档。因此,此处的“文档”分为监控系统的“活动文档”和 wiki 中更详细的离线文档。因为我花了很多时间盯着 Nagios,所以努力让它尽可能提供信息是有意义的。
我的机器不断发出 udp dns 流量请求。我需要知道的是生成此流量的进程的 PID。
TCP 连接的正常方式是使用 netstat/lsof 并在 pid 处获取关联的进程。
UDP 连接是无状态的,所以,当我调用 netastat/lsof 时,只有当 UDP 套接字打开并且它正在发送流量时,我才能看到它。
我已经尝试过lsof -i UDP和nestat -anpue,但我找不到哪个进程正在执行该请求,因为我需要在发送 udp 流量时准确调用 lsof/netstat,如果我在发送 udp 数据报之前/之后调用 lsof/netstat 是无法查看打开的 UDP 套接字。
在发送 3/4 udp 数据包时准确调用 netstat/lsof 是不可能的。
我如何识别臭名昭著的过程?我已经检查了流量以尝试从数据包的内容中识别发送的 PID,但无法从流量的内容中识别它。
任何人都可以帮助我吗?
我在这台机器上 root FEDORA 12 Linux noise.company.lan 2.6.32.16-141.fc12.x86_64 #1 SMP Wed Jul 7 04:49:59 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux