linux: /var/run目录

http://blog.sina.com.cn/s/blog_5395a50f0101nz97.html

启动mysql5.6时报错:

[root@test2 dbdata]# ./mysql56_keepalived_start.sh 
[root@test2 dbdata]# 180824 07:32:28 mysqld_safe Logging to '/var/run/mysqld/my56_3306.log'.
touch: cannot touch ‘/var/run/mysqld/my56_3306.log’: No such file or directory
chmod: cannot access ‘/var/run/mysqld/my56_3306.log’: No such file or directory
touch: cannot touch ‘/var/run/mysqld/my56_3306.log’: No such file or directory
chown: cannot access ‘/var/run/mysqld/my56_3306.log’: No such file or directory
180824 07:32:28 mysqld_safe Starting mysqld daemon with databases from /dbdata/mysql/my56_3306/data

由此引出/var/run的一些知识.直接转载了:

/var/run是干什么用的

根据linux的文件系统分层结构标准(FHS)中的定义:

/var/run 目录中存放的是自系统启动以来描述系统信息的文件。
比较常见的用途是daemon进程将自己的pid保存到这个目录。
标准要求这个文件夹中的文件必须是在系统启动的时候清空,以便建立新的文件。

为了达到这个要求,linux中/var/run使用的是tmpfs文件系统,这是一种存储在内存中的临时文件系统,当机器关闭的时候,文件系统自然就被清空了。使用df -Th命令能看到类似的输出结果:

[root@test2 dbdata]# df -Th /var/run
Filesystem     Type   Size  Used Avail Use% Mounted on
tmpfs          tmpfs  2.0G  9.0M  2.0G   1% /run

当然/var/run除了保存进程的pid之外也有其他的作用,比如utmp文件,就是用来记录机器的启动时间以及当前登陆用户的。

为什么要使用/run代替

这是因为/var/run文件系统并不是在系统一启动就是就绪的,而在此之前已经启动的进程就先将自己的运行信息存放在/dev中,/dev同样是一种tmpfs,而且是在系统一启动就可用的。但是/dev设计的本意是为了存放设备文件的,而不是为了保存进程运行时信息的,所以为了不引起混淆,/dev中存放进程信息的文件都以”.”开始命名,也就是都是隐藏文件夹。但是即便是这样,随着文件夹的数量越来越多,/dev里面也就越来越混乱,终于有人坐不住了,所以引入了替代方案,也就是 /var/run。

使用/var/run有什么好处

主要就是解决了上边说的管理不一致,最终使各个发行版统一管理。最终将/var/run和/var/lock都归并到/run中。而且在也不用使用隐藏文件夹这种伎俩了,对管理员来说轻松了不少。同样/dev中也不会有不相关的内容了。

所以,启动mysql报错的解决:

log-error=/var/log/mysqld/my56_3306.log

 

### `-v jenkins-data:/var/jenkins_home` `-v` 是 Docker 中的挂载参数,用于实现容器和宿主机之间的数据共享和持久化。`jenkins-data` 是一个 Docker 数据卷的名称,数据卷是 Docker 提供的一种用于持久化数据的机制,它独立于容器的生命周期,即使容器被删除,数据卷中的数据也不会丢失。`/var/jenkins_home` 是容器内的路径,`-v jenkins-data:/var/jenkins_home` 表示将 `jenkins-data` 数据卷挂载到容器内的 `/var/jenkins_home` 目录,这样 Jenkins 在运行过程中产生的数据,如配置文件、构建历史等,都会存储在 `jenkins-data` 数据卷中,方便管理和迁移。 ### `-v /var/run/docker.sock:/var/run/docker.sock` `/var/run/docker.sock` 是 Docker 守护进程(Docker daemon)的 Unix 套接字文件,Docker 客户端通过与这个套接字文件通信来向 Docker 守护进程发送命令。将宿主机的 `/var/run/docker.sock` 挂载到容器内的 `/var/run/docker.sock`,可以让容器内的进程通过这个套接字与宿主机的 Docker 守护进程进行通信,从而在容器内执行 Docker 命令,例如在 Jenkins 容器中使用 Docker 进行构建等操作。不过需要注意的是,这种挂载方式存在一定的安全风险,因为如果容器被攻陷,攻击者可以通过这个套接字控制宿主机的 Docker 守护进程。 ### `-v $(which docker):/usr/bin/docker` `$(which docker)` 是一个命令替换,它会在宿主机上查找 `docker` 命令的实际路径,并将其替换为该路径。`/usr/bin/docker` 是容器内的路径,`-v $(which docker):/usr/bin/docker` 表示将宿主机上 `docker` 命令的可执行文件挂载到容器内的 `/usr/bin/docker` 路径,这样容器内就可以使用宿主机上的 Docker 客户端,结合前面挂载的 `/var/run/docker.sock`,容器内的进程就可以像在宿主机上一样执行 Docker 命令。 ### `jenkins/jenkins:2.516` 这是 Docker 镜像的名称和标签。`jenkins/jenkins` 是镜像的名称,通常由两部分组成,前面的 `jenkins` 是镜像的命名空间,一般表示该镜像的所有者或组织,后面的 `jenkins` 是具体的镜像名称,这里表示这是一个 Jenkins 相关的镜像。`:2.516` 是镜像的标签,用于指定镜像的版本,这里表示使用的是 Jenkins 版本为 2.516 的镜像。 ```bash # 完整的 docker run 命令示例 docker run \ -u root \ -d \ --restart=always \ -p 8888:8080 \ -p 50000:50000 \ --name jenkins \ --platform linux/amd64 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ jenkins/jenkins:2.516 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值