小编fra*_*san的帖子

管道命令以什么顺序运行?

我从来没有真正考虑过 shell 是如何实际执行管道命令的。我一直被告知“一个程序的标准输出通过管道传输到另一个程序的标准输入中”,这是对管道的一种思考方式。所以很自然地,我认为在 say 的情况下,A | B,A将首先运行,然后B获取 的标准输出A,并使用标准输出A作为其输入。

但我注意到,当人们搜索特定的工艺ps,他们会包括grep -v "grep"在命令的末尾,以确保grep不会出现在最终的输出。
这意味着在命令ps aux | grep "bash" | grep -v "grep"中暗示ps知道grep正在运行,因此在ps. 但是如果ps在它的输出通过管道传输到 之前完成运行,它grep怎么知道它grep正在运行?

flamingtoast@FTOAST-UBUNTU: ~$ ps | grep ".*"
PID TTY          TIME CMD
3773 pts/0    00:00:00 bash
3784 pts/0    00:00:00 ps
3785 pts/0    00:00:00 grep
Run Code Online (Sandbox Code Playgroud)

pipe ps

109
推荐指数
3
解决办法
3万
查看次数

如何从 /proc 获取接口的 IPV4 地址

是否有一种干净、简单的方法可以从 获取网络接口的 IP 地址/proc,类似于获取网络接口的 MAC 地址的方式?
理想情况下,我只输入 cat/proc/<foo>/{interface_name}并获取 IPv4 地址。

除了cat.

linux ip proc

35
推荐指数
3
解决办法
4万
查看次数

`ls` 命令的颜色输出不一致

我在当地一所大学教授 UNIX/Linux 入门课程,我的一个学生问了以下问题:

为什么我的目录中有一些文件是白色的,而另一些是灰色的?白色的是我今天创建的文件,灰色的是现有文件吗?

当我研究这个时,我首先认为答案会在LS_COLORS变量中,但进一步的调查显示,使用-lswitch时的颜色列表-al与使用ls命令的switch时的颜色列表不同。请参阅以下屏幕截图:

使用 ls -l 名为“3”的文件显示为白色

使用 -al 开关,同一文件显示为灰色

使用ls -l名为“3”的文件显示为白色,但使用-al开关相同的文件显示为灰色。

这是 ls 中的错误还是有人知道为什么会这样?

linux command-line ls colors

28
推荐指数
1
解决办法
2810
查看次数

在 Linux 上“离线”(无外部网络)运行子进程的命令

我有一个程序,我想在不关闭实际网络的情况下在离线模式下进行测试。该程序仍需要连接到本地套接字,包括 unix 域套接字和环回。它还需要侦听环回并对其他应用程序可见。

但是尝试连接到远程机器应该会失败。

我想有一个工具,它的工作原理是strace/ unshare/ sudo,只是运行在互联网(和LAN)隐蔽和一切仍在工作的命令:

$ offline my-program-to-test
Run Code Online (Sandbox Code Playgroud)

这个问题暗示了答案:阻止进程的网络访问?

那里有一些建议,例如以另一个用户身份运行然后操作 iptables,或unshare -n. 但在这两种情况下,我都不知道让 unix 域套接字和环回与主系统共享的咒语 - 该问题的答案只告诉我如何取消共享整个网络。

我正在测试的程序仍然需要连接到我的 X 服务器和 dbus,甚至能够监听来自系统上其他应用程序的环回连接。

理想情况下,我想避免创建 chroot 或用户或 VM 等,因为它变得和拔掉网线一样烦人。即问题的重点是我怎样才能使它像sudo.

我希望该过程能够 100% 正常运行,除非指定非本地地址的网络调用会失败。理想情况下,保持相同的 uid、相同的 homedir、相同的密码、相同的所有内容,除了...离线。

我正在使用 Fedora 18,因此不可移植的 Linux 答案很好(甚至是预期的)。

我什至很高兴通过编写 C 程序来解决这个问题,如果涉及到的话,那么涉及编写 C 的答案就很好。我只是不知道 C 程序需要进行哪些系统调用才能在保留本地网络的同时撤销外部网络访问。

任何试图支持“离线模式”的开发人员都可能会喜欢这个实用程序!

linux networking lxc capabilities namespace

18
推荐指数
1
解决办法
3697
查看次数

顶部的完整用户名

在我们的系统上,用户名最长可达 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)

top

11
推荐指数
2
解决办法
1万
查看次数

Linux 本地目录权限作为非 root 用户的问号

我见过类似存储设备故障、远程存储(SAN、NAS)故障的情况,我想我什至见过由挂载权限引起的类似情况。但这是我第一次看到这种情况发生在与我的主目录相同的文件系统上。

这里有什么样的权限?绝对不是挂载(我在同一个 ext4 文件系统上),不是 SELinux,不是 ACL。然后呢?

我不记得这个目录是如何创建的。它很可能是由某种软件创建的。

对我来说,最奇怪的部分是该目录甚至不允许查看其或其父级的信息(最后一个命令)。

我正在使用 Linux Mint Sarah。

user01@MyPC ~/somedirectory $ ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace
Run Code Online (Sandbox Code Playgroud)
user01@MyPC ~/somedirectory $ ls -ld ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
drw-r--r-- 3 user01 user01 4096 Rgs 27  2016 ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:
Run Code Online (Sandbox Code Playgroud)
user01@MyPC ~/somedirectory $ sudo file ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:: directory
Run Code Online (Sandbox Code Playgroud)
user01@MyPC ~/somedirectory $ sudo ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
viso 4
drwxr-xr-x 3 user01 user01 4096 Rgs 27  2016 workspace
Run Code Online (Sandbox Code Playgroud)
user01@MyPC ~/somedirectory $ sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\: …
Run Code Online (Sandbox Code Playgroud)

filesystems permissions directory

10
推荐指数
2
解决办法
1万
查看次数

Linux 音频频谱分析仪

我是一名本科生,我正在寻找一个频谱分析仪(或至少是一组函数),它将以数组的形式输出播放的声音的频率范围。

linux software-rec audio

9
推荐指数
1
解决办法
3万
查看次数

INotify max_user_instances 和 max_user_watches 之间到底有什么区别?

在阅读了互联网上的一些文章后,我对 INotify max_user_instancesmax_user_watches之间的区别有点迷失。

来自 Linux 官方人员:

/proc/sys/fs/inotify/max_user_instances

这指定了每个真实用户 ID 可以创建的 INotify 实例数量的上限。

/proc/sys/fs/inotify/max_user_watches

这指定了每个真实用户 ID 可以创建的监视数量的上限。

这是否意味着它max_user_instances是 INotify 进程的一个实例,它可以监视多个文件系统并且其限制由 指定max_user_watches

如果前者是正确的,那么在实践中它是如何运作的?每个必须监视某些文件系统的进程正在创建 INotify 的用户实例(我认为不是真的,因为它与用户 ID 相关)?

目前,在 Amazon Ec2 实例上部署后,出现如下错误:

 System.IO.IOException: The configured user limit (128) on the number of INotify instances has been reached.
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,创建了太多实例,这些实例正在监视文件系统更改?造成这种情况的原因是什么?

amazon-ec2 inotify

8
推荐指数
1
解决办法
7186
查看次数

使用 Bash 变量将一组参数传递给程序

我试图通过在 bash 变量中放置重复参数来清理我的 shell 脚本。

我知道的最好的方法是将它放在一个数组中并传递它......但这似乎不起作用。如何将所有参数存储在变量中?

这不起作用:

TESTP=( "-path" "\"./var/*\"")
echo ${TESTP[@]}
 # Results in: -path "./var/*"
find ${TESTP[@]}
 # Returns no results.
Run Code Online (Sandbox Code Playgroud)

Whilefind -path "./var/*"确实返回 var 下的所有文件。

shell bash fedora array

7
推荐指数
1
解决办法
2881
查看次数

为什么发现软件管理器无法加载 Arch LInux 中的应用程序?

为什么发现软件管理器没有在 Arch Linux 中加载任何应用程序?这就是discover所说的:

Discover 目前无法用于安装任何应用程序,因为其应用程序后端均不可用。请将此错误报告给您的发行版。

请看一下截图:

在此输入图像描述

但我可以通过终端下载软件包。请帮忙。

kde arch-linux application plasma5

7
推荐指数
1
解决办法
2万
查看次数