小编rph*_*rph的帖子

如何避免使用cat命令中的管道破裂?

为什么这个简单的命令使用 emacs shell (eshell) 会失败?

cat file.txt | wc 
Run Code Online (Sandbox Code Playgroud)

我有一个 10241 行的文件。每行少于 50 个字符。大约 90% 的时间我启动这个命令,它给出了错误的结果,即行数。尽管如此,没有给出错误消息。

看起来断管是一个很常见的话题,但我还没有找到任何合理的解释。此外,没有人提出任何解决方法。我怎样才能让这个简单的命令可靠地工作?

当然,我本来可以跑的wc file.txt。但我正在寻找一种更通用的解决方案,其中任何工具都可以很好地使用管道 cat: cat file.txt | any_tool_here

细节

我正在使用 CentOS 5。使用eshell (emacs shell)时会出现此问题。我正在使用 GNU Emacs 24.5.2。

实验

使用的结果样本cat file.txt | wc(预期:第一列始终为 10241)。

  1. 8568 25706 110571
  2. 9837 29513 126947
  3. 5395 16187 69615
  4. 9202 27608 118757
  5. 7299 21899 94199
  6. 9837 29513 126947

结果样本使用wc file.txt

  1. 10241 30723 132156
  2. 10241 30723 132156
  3. 10241 30723 132156
  4. 10241 30723 132156 …

pipe emacs cat

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

strace 报告未完成的系统调用

我检查了此进程请求的系统调用,我得到的strace是未完成的输出:

命令strace -s 99 -ffp [PID]

输出read(0,

我有以下问题:

  1. 这是否意味着我的进程陷入了系统调用(例如此处报告的/sf/ask/1925338901/)?
  2. 为什么会出现这种情况?
  3. 是程序的bug还是内核的bug?
  4. 除了杀掉程序还有什么办法吗?

linux system-calls

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

符号链接的替代选项 (ln)

我想创建我的主文件夹的别名,但我对父目录没有写权限。

我曾经user服务器上有一个用户名 ( ) 。但是现在,我使用的是服务器,并且我的用户名已更改为user2. 我的许多脚本都有我的旧主文件夹名称 ( /home/user) 的绝对路径。我希望它们在我的新服务器上兼容,我的主文件夹现在不同 ( /home/user2)。

显然,我可以只创建一个指向我以前的家庭名称 ( ln -s /home/user2 /home/user)的符号链接。但是,我没有对该目录的写权限/home

是否有任何替代选项可以在没有 root 权限的情况下创建此类别名?

细节:

我正在使用 CentOS 5。

permissions alias symlink

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

标签 统计

alias ×1

cat ×1

emacs ×1

linux ×1

permissions ×1

pipe ×1

symlink ×1

system-calls ×1