linux、docker容器缺少tailf命令,解决方案。 - Go语言中文社区

linux、docker容器缺少tailf命令,解决方案。


两种方案

第一种(推荐)

如果宿主服务器上面有tailf命令,可以直接到宿主机的 /usr/bin/ 目录下,寻找tailf文件

在这里插入图片描述
把该目录下的文件复制到指定的docker容器的 /usr/bin/ 目录下,然后就可以使用tailf命令了。
复制命令:docker cp /usr/bin/tailf 9c83a80fbeda:/usr/bin

				命令解析:docker cp  			   //复制命令
 						 /usr/bin/tailf    		   //服务器文件路径
 						 9c83a80fbeda              //容器id(可以通过docker ps 命令查看CONTAINER ID)
 						 /usr/bin                  //容器中的路径(用于存放复制文件)

在这里插入图片描述
如果出现 异常信息:-bash: /usr/bin/tailf: Permission denied
使用chmod指令修改文件权限
命令:chmod 777 usr/bin/tailf
然后就可以了

第二种方案

与第一种方案类型,自己写一个脚本文件,我写了一个简单的,可以直接用,很有瑕疵,文件名为tailf,没有后缀。

# !/bin/bash  
if [ $# -eq 1 ]; then
  tail -f -n -10 $1
elif [ $# -eq 2 ]; then
  tail -f -n $1 $2
else
  echo "Command line format tailf -num filepath, for example tailf -100 log.log"
fi

这个脚本主要判断有几个参数,如果有一个默认输出10行,如果有两个,则输出自定义的行数。

我自己的脚本文件是放到 /etc/init.d/ 目录下的,把这个脚本文件复制到docker容器中的相同目录下。
执行命令:docker cp /etc/init.d/tailf 9c83a80fbeda:/etc/init.d

进入容器:docker exec -it 9c83a80fbeda /bin/bash

			命令解析:docker exec        //进入容器命令
					  -i: 交互式操作。
                      -t: 终端。
                      9c83a80fbeda: 容器id。
                     /bin/bash:命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

进入容器后
给脚本文件赋予执行权限
命令:chmod +x /etc/init.d/tailf

然后进入容器的/usr/bin/目录下
命令:cd /usr/bin

建立软链接,这个操作就是在/usr/bin目录下建立指向/etc/init.d/tailf的tailf文件。
想想详细了解软链接 请看菜鸟教程 https://www.runoob.com/linux/linux-comm-ln.html
命令:ln -s /etc/init.d/tailf
在这里插入图片描述
效果相同:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weferxe/article/details/104753212
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2023-01-03 16:33:50
  • 阅读 ( 517 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢