我想要grep
.
.... 但
find ... | xargs grep
,因为 xargs 不评估别名。如何解决这个问题?
在我们的系统上,用户名最长可达 20 个字符。但top
命令只显示前 8 个字符。
如何配置top
以显示整个用户名?
目前我们使用:top procps version 3.2.8 (linux)
但是可以安装不同的顶级实现。
我们需要支持的最古老的系统是这样的:
Linux foohost 2.6.37.1-1.2-desktop #1 SMP PREEMPT 2011-02-21 10:34:10 +0100 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud) 如果我这样使用,后缀守护进程只有名称“master” netsat
:
root@myhost# netstat -tulpen| grep master
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 53191445 13640/master
Run Code Online (Sandbox Code Playgroud)
如果我使用,ps
我会得到一个更详细的名字:
root@myhost# ps aux| grep 13640
root 13640 0.0 0.0 25036 1500 11:35 0:00 /usr/lib/postfix/master
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉netstat
输出长名称?
在这种情况下,它将是/usr/lib/postfix/master
.
好像是netstat做不到的。如果您知道如何使用其他工具执行此操作,那么这也是一个有效的问题。(但仍首选基于 netstat 的解决方案)。
所有答案都有效。非常感谢您展示您的 Unix 知识。但到目前为止,答案太长/太复杂了。
没有简单的解决办法吗?我可以安装任何需要的工具,但我希望用法简单易用。
有几个答案可以进行后期处理以获得所需的信息。每个答案都使用不同的方式,我不认为一种解决方案比另一种更好。
不幸的是,似乎没有 unix/linux 可以开箱即用。但这不是你的错,你试图帮助我。
不幸的是,我不能对所有答案都给予奖励:-)
我给了信誉点最少的用户赏金。
我想按lstart
(过程开始)对此输出进行排序:
ps -eo lstart,pid,cmd
Run Code Online (Sandbox Code Playgroud)
有没有办法以 YYYY-MM-DD HH:MM:SS 这样的 ISO 格式输出 lstart?
但仅靠排序并不能解决问题。我真的很想拥有 ISO 日期格式。
如果/my-directory
不存在,是否有一种简单的方法可以让这个默默地什么都不做?
find /my-directory -type f -mtime +14 -print0 | xargs -r0 rm
Run Code Online (Sandbox Code Playgroud)
版本:
我喜欢这个图案ps aux | grep something
。
这样我就可以轻松找到所需的信息,而无需记住命令的命令行选项ps
。
不幸的是,ps 命令会在 7 个字符后剪切 linux 用户名(第一列),+
如果用户名更长,则添加一个。
就我而言,这很重要,因为用户名类似于“foobar_123”和“foobar_234”。
我知道我可以使用以下命令,但是如果我仍然可以使用该ps aux | grep something
模式就太好了。
ps ax o user:16,pid,pcpu,pmem,vsz,rss,stat,start_time,time,cmd
Run Code Online (Sandbox Code Playgroud)
如何通过配置获得以上格式,从而ps aux | grep something
不削减用户名?
提示:“use ps ... special...args...”之类的答案与上述问题不符。
版本:procps-ng 3.3.5 版
我很高兴并且非常喜欢bash shell的Ctrl-R向后搜索功能。我的一些同事不喜欢它,因为它有时令人困惑。我理解他们。如果您输入错误的字符,历史记录中的当前位置是过去的某个位置,您将找不到最近的匹配项。
在 shell 历史中向后搜索是否有更用户友好的替代方法?
我想坚持使用 bash。建议使用替代 shell 不是这个问题的答案。
这里解释了“丢失位置”的问题:重置 bash 历史搜索位置。这些解决方案有效。这是正确的。但是根据我的观点,那里的解决方案并不容易且用户友好。这些解决方案并不简单直接。这些都是过去的解决方案。过去,人类需要学习计算机想要输入的方式。但是今天,工具应该以一种对用户来说很容易的方式接受输入。
也许有人知道像 PyCharm 这样的 jetbrains IDE。如果您搜索“foobar”,您甚至会得到包含“foo_bar”的行。太好了,那是 unix :-)
我/home/foo
在服务器上有一个目录,我想不再需要它了。
不幸的是没有人能告诉我这个目录是否仍然需要。
如果还需要这个目录,我想知道哪个进程访问它。
观看在此目录下打开的所有文件。
不幸的是,该目录包含很多子目录,这就是我不想使用 inotify 的原因。
如何查看目录(递归)树下打开的所有文件?我想知道哪个进程访问它。
/home
是一个 ext4 文件系统。 我的问题不是重复是否有可能找出哪个程序或脚本创建了给定的文件?自从 ....:
已经有两个很好的答案了。但我很好奇,也许还有其他方法:50 的赏金 :-)
这样我得到彩色输出:
grep class testdata.py
Run Code Online (Sandbox Code Playgroud)
由于这是在我的 .bashrc 中设置的:
alias grep='grep -n --color'
Run Code Online (Sandbox Code Playgroud)
但是如果我这样搜索,我看不到彩色输出:
find -name '*.py' | xargs grep "class"
Run Code Online (Sandbox Code Playgroud)
有人知道如何启用grep
if 调用的彩色输出find ...| xargs grep
吗?
我更喜欢(Perl/Python Compatible Regular Expressions)正则表达式。
man grep
:
....,但只有在系统中 pcre 可用时才有效
最常见的 linux 发行版是否支持此功能?
我不在乎 freebsd、solarix、busybox,...