Linux常见问题解答

搜索文件中所有以包含 std字符串且以.h扩展名结尾的文件

sudo find / -name "*std*.h"

sudo find / -iname "*std*.h"  #忽略大小写
sudo find / -name "*.h" |grep std

请问下面这段 Shell 程序的作用是什么?

mkfifo pipe1

mkfifo pipe2

echo -n run | cat - pipe1 > pipe2 &

cat < pipe2 > pipe1

前 2 行代码创建了两个管道文件

从第 3 行开始,代码变得复杂。echo -n run就是向输出流中写入一个run字符串(不带回车,所以用-n)。通过管道,将这个结果传递给了catcat是 concatenate 的缩写,意思是把文件粘在一起。

  • cat>重定向输出到一个管道文件时,如果没有其他进程从管道文件中读取内容,cat会阻塞。

  • cat<读取一个管道内容时,如果管道中没有输入,也会阻塞。

从这个角度来看,总共有 3 次重定向:

  • -也就是输入流的内容和pipe1内容合并重定向到pipe2

  • pipe2内容重定向到cat

  • cat的内容重定向到pipe1

仔细观察下路径:pipe1->pipe2->pipe1,构成了一个循环。 这样导致管道pipe1管道pipe2中总是有数据(没有数据的时间太短)。

于是,就构成了一个无限循环。我们打开执行这个程序后,可以用htop查看当前的 CPU 使用情况,会发现 CPU 占用率很高。

如果一个目录是只读权限,那么这个目录下面的文件还可写吗?

 你可以看到上图中,foo 目录不可读了,下面的foo/bar文件还可以写。 即便它不可写了,下面的foo/bar文件还是可以写。

 但是想要创建新文件就会出现报错,因为创建新文件也需要改目录文件。这个例子说明 Linux 中的文件内容并没有存在目录中,目录中却有文件清单。

如何查看正在 TIME_WAIT 状态的连接数量?

  • 注意,这里有个小坑,就是 netstat 会有两行表头,这两行可以用 tail 过滤掉,下面tail -n +3就是告诉你 tail 从第 3 行开始显示。
  • -a代表显示所有的 socket。
netstat -a | tail -n +3  | wc -l

如果你在编译安装 MySQL 时,发现找不到libcrypt.so ,应该如何处理?

遇到这类问题,首先应该去查资料。 比如查 StackOverflow,搜索关键词:libcrypt.so not found,或者带上自己的操作系统ubuntu

根据access_log 分析出有哪些终端访问了这个网站,并给出分组统计结果。

cat nginx_logs.txt | awk '{print $12}' | sort | uniq 

然后需要写一个脚本,进行统计:

cat nginx_logs.txt |\

awk '{tms[$12]++;next}END{for (t in tms) print t, tms[t]}'

根据 access_log 分析出访问量 Top 前三的网页

cat nginx_logs.txt | awk '${print $7}' | sort | uniq
  •  可以不用subString等复杂的处理,也可以使用sort和uniq的组合
  • ~/.bashrc ~/.bash_profile, ~/.profile 和 /etc/profile 的区别是什么?
  • 执行一个 shell 的时候分成login shellnon-login shell
  • 顾名思义我们使用了sudo``su切换到某个用户身份执行 shell,也就是login shell
  • 还有 ssh 远程执行指令也是 login shell,也就是伴随登录的意思——login shell 会触发很多文件执行,路径如下:
  • /etc/profile -> /etc/profile.d -> ~/.bashrc > /etc/bashrc

如果以当前用户身份正常执行一个 shell,比如说./a.sh,就是一个non-login的模式。 这时候不会触发上述的完整逻辑。

baserc文件通常只在interactive模式下才会执行,这是因为~/.bashrc文件中通常有这样的语句,如下图所示:

 这个语句通过$-看到当前shell的执行环境,如下图所示:

  •  带 i 字符的就是interactive,没有带i字符就不是。
  • 因此, 如果你需要通过 ssh 远程 shell 执行一个文件,你就不是在 interactive 模式下,bashrc 不会触发。
  • 但是因为登录的原因,login shell 都会触发,也就是说 profile 文件依然会执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值