如何使用进程名称从正在运行的进程中获取命令参数或整个命令行?
例如这个过程:
# ps
PID USER TIME COMMAND
1452 root 0:00 /sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid
Run Code Online (Sandbox Code Playgroud)
我想要的是/sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid或争论。我知道进程名称并想要它的参数。我在 SliTaz 上使用 Busybox。
我得到了一个 mini 的文件linux,它可以直接启动到firefox. 它适用于它应该做的所有事情,只是我没有互联网连接。
我们在网络中有 3 个 DNS 服务器,它们都可以正常工作。我也可以ping通他们。但是当我尝试ping google.de或wget google.de我得到一个bad address错误。
nslookup google.de 出于某种原因工作。
我将问题追溯到我resolv.conf在启动系统上的内容与resolv.conf我放入.iso文件中的内容不同。
我尝试了解创建和修改resolv.conf. 我不太确定我是否掌握了所有内容,但我绝对没有在那里找到我的解决方案。
所以作为最后的努力,我尝试resolv.conf使用
:~# chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,当重新构建并再次启动时,我的文件被重命名为resolv.conf~,取而代之的是一直困扰着我的同一个标准文件。
文件内容让我相信它是从网络本身获取信息的。.iso在没有互联网访问权限的情况下启动Virtualbox 时,我的文件将保持原样。
我试图/etc/dhcp/dhclient.conf通过删除domain-name-server和domain-name-search从request文件的一部分来改变不从网上获取信息。
不幸的是没有工作。
我没有安装 NetworkManager。ISO 基于 Ubuntu 14.04。
可能缺少重要信息。我很乐意提供它。
更新:
我想我找到了清除resolv.conf.
好像是 /usr/share/udhcpc/default.script
#!/bin/sh
# udhcpc script edited by Tim Riker …Run Code Online (Sandbox Code Playgroud) 我的服务器程序收到一个 SIGTERM 并停止(退出代码为 0)。我对此感到惊讶,因为我很确定它有足够的内存。linux (busybox) 在什么情况下会向进程发送 SIGTERM?
最初发布到 AskUbuntu.com ...
AskUbuntu 采用了关闭有关 EOL(生命周期结束)版本问题的策略。还有一个声音队伍来删除它们。为了防止可能丢失这个热门问题(迄今为止有 342335 次浏览),我在此处放置了一个修订版。--- 文档打捞者
“经典”系统...
GRUB 2将许多*.mod文件(内核模块)放在/boot/grub. 删除这些文件(认为它们是放错位置的声音文件)导致重新启动失败并提示grub rescue>.
在这种情况下如何恢复?
我在阅读著名的Unix Recovery Legend 时,突然想到:
如果我打开了一个 BusyBox shell,并且 BusyBox 二进制文件本身被删除了,我还能使用 BusyBox 二进制文件中包含的所有命令吗?
显然,我无法从另一个正在运行的 shell 中使用这些命令的 BB 版本,例如bash,因为 BusyBox 文件本身将无法bash打开和运行。但是在 BusyBox 的运行实例中,在我看来,BB 可以通过两种方法运行命令:
如果 (1) 是 BusyBox 的工作方式,我希望在删除 BB 二进制文件后,某些 BusyBox 提供的命令在 BB 的运行实例中将变得不可用。
如果 (2) 是它的工作原理,那么 BusyBox 甚至可以用于恢复 BB 本身已被删除的系统——前提是仍然可以访问 BusyBox 的一个正在运行的实例。
这在任何地方都有记录吗?如果没有,有没有办法安全地测试它?
我有一个使用 Busybox (OpenWRT) 的嵌入式 linux 系统 - 所以命令是有限的。我有两个文件,看起来像:
第一个文件
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
Run Code Online (Sandbox Code Playgroud)
第二个文件
mmmmmm
nnnnnn
yyyyyy
zzzzzz
Run Code Online (Sandbox Code Playgroud)
我需要将这 2 个列表合并为 1 个文件,并删除重复项。 我没有差异(空间有限),所以我们得到使用的伟大awk,sed和grep(或可能被包含在一个标准的Busybox的实例其他工具)。转到合并文件,例如:
command1 > mylist.merge
command2 mylist.merge > originallist
Run Code Online (Sandbox Code Playgroud)
完全没问题。它不必是单行命令。
当前在我使用的 Busybox 实例中定义的函数(默认 OpenWRT):[, [[, arping, ash, awk, basename, brctl, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cmp, cp、crond、crontab、cut、date、dd、df、dirname、dmesg、du、echo、egrep、env、expr、false、fgrep、find、free、fsync、grep、gunzip、gzip、halt、head、hexdump、 hostid、hwclock、id、ifconfig、init、insmod、kill、killall、klogd、less、ln、锁、记录器、logread、ls、lsmod、md5sum、mkdir、mkfifo、mknod、mktemp、mount、mv、nc、netmsg、 netstat, nice, nslookup, ntpd, passwd, pgrep, pidof, ping, ping6, pivot_root, pkill, poweroff, printf, ps, pwd, reboot, reset, rm, rmdir, rmmod, …
原来的:
2011 年 1 月 23 日 10:42 某事 2007.12.20.avi 2009 年 6 月 26 日 某事 2009.06.25.avi 2010 年 2 月 12 日 某事 2010.02.11.avi 2011 年 1 月 29 日 09:17 某事 2011.01.27.avi 2011 年 2 月 11 日 20:06 某事 2011.02.10.avi 2011 年 2 月 27 日 23:05 某事 2011.02.24.avi
输出:
2011 年 2 月 27 日 23:05 某事 2011.02.24.avi 2011 年 2 月 11 日 20:06 某事 2011.02.10.avi 2011 年 1 月 29 日 09:17 某事 …
我正在尝试(尽可能接近)以原子方式更改符号链接。我试过了:
ln -sf other_dir existing_symlink
Run Code Online (Sandbox Code Playgroud)
这只是将新符号链接放在 existing_symlink 指向的目录中。
ln -sf other_dir new_symlink
mv -f new_symlink existing_symlink
Run Code Online (Sandbox Code Playgroud)
这做了同样的事情:它将符号链接移动到目录中。
cp -s other_dir existing_symlink
Run Code Online (Sandbox Code Playgroud)
它拒绝,因为它是一个目录。
我读过这mv -T是为此而制作的,但是busybox没有-T标志。
我在嵌入式系统中使用busybox,我想检查它的版本。如何从busybox 中检查busybox 版本?
我top在busybox 上运行,它显示所有进程及其虚拟内存大小。
如何确定每个进程使用了多少 RAM?