小编act*_*ato的帖子

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

我从来没有真正考虑过 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万
查看次数

SSH 和主目录权限

我用我学校服务器上的一个班级帐户解决这个 SSH 问题花了我几个小时。

我无法在不输入密码的情况下通过 ssh 进入一个特定的班级帐户,而无密码身份验证可与我的其他班级帐户一起使用。.ssh/ 目录及其所有内容与其他类帐户具有相同、正确的权限。

原来问题是在我自己的主目录上设置的权限。当我的 HOME 目录的权限设置为 770(无论为 .ssh/ 设置的权限如何)时,无密码身份验证不起作用,但它在权限设置为 755 或 700 时有效。

有谁知道为什么 SSH 会这样做?是不是因为主目录权限太宽松了?当主目录设置得比 700 更宽松时,为什么 SSH 拒绝使用公钥/私钥进行身份验证?

ssh permissions

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

标签 统计

permissions ×1

pipe ×1

ps ×1

ssh ×1