[problem help] 每次重启后,/run 目录下新建的文件都会消失
Tofloor
poster avatar
yulc
deepin
2024-06-18 22:31
Author

场景描述:

在 V23版本上安装mysql数据库时指定了安装目录,用navicat 链接时提示需要 /run/mysqld/mysqld.sock 。默认没有该文件,就在 /run 下新建了mysqld目录,然后将安装目录下的mysqld.socket 软连接过来,navicat可以正常访问。

操作命令:

cd /run

sudo mkdir mysqld

sudo ln -s /home/soft/mysql-8.4.0/mysql.sock /run/mysqld/mysqld.sock

问题:

每次电脑重启之后 /run目录下之前建的 mysqld目录消失了。每次都需要重新建立目录,然后再建立软连接。之前在20.9 版本没有遇到过这种问题。

Reply Favorite View the author
All Replies
neko
deepin
Ecological co-builder
2024-06-19 05:47
#1

/run目录下本来就每次重启清空的。这里面的文件正常都是程序运行时生成的,你应该配置mysqld并把生成的socks指定到对应目录。

Reply View the author
风月相知
deepin
2024-06-19 07:00
#2

Linux /run 目录概述
/run 目录在Linux系统中扮演着至关重要的角色,它主要用于存放运行时数据,如进程ID文件、锁文件、套接字文件等。这些数据通常用于协助程序运行时的交互,确保程序能够顺利完成任务。/run 目录作为一个临时文件系统(tmpfs),其内容存储在内存中而非磁盘上,这使得它在系统重启后不会保留任何数据。
/run 目录的作用
/run 目录中的文件和目录对于系统运行至关重要。例如,/run/user 目录下会有一些带数字编号的目录,这些数字代表了用户的UID。每个目录中包含的都是与该用户相关的运行中进程所使用的文件。此外,还有一些文件记录了各种系统进程的进程ID,如sshd.pid文件就包含了SSH守护进程的进程ID。
/run 目录与其他目录的关系
在历史上,类似的运行时数据曾存储在/dev/.XXX或/var/run目录中。但随着系统设计的演进,/run目录成为了更标准的做法,因为它能够在系统以只读根文件系统挂载时更容易地使用。在某些Linux发行版中,/var/run目录会通过符号链接到/run,以确保旧的引用按预期工作。
/run 目录的管理
由于/run目录中的数据是临时的,系统会在重启时清理其中的内容。因此,应用程序需要在启动时重新创建所需的文件和目录。有关如何在启动时重新创建文件和目录的详情,可以查看tmpfiles.d man页面。此外,系统管理员可能需要手动清理/run目录中的无用文件,以防止对系统造成过多负担。
结论
综上所述,/run目录是Linux系统中用于存储临时运行时数据的推荐位置。它通过tmpfs实现,保证了数据在内存中的快速访问,同时在系统重启后自动清理,避免了不必要的数据积累。在使用/run目录时,需要注意正确设置权限,并遵循系统提供的指导原则来管理和清理临时文件。

Reply View the author
deepinuser17
deepin
2024-06-19 09:27
#3
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.6G  3.2M  1.6G   1% /run
tmpfs           7.8G  2.5M  7.8G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs           1.6G  108K  1.6G   1% /run/user/1001

把sock设置到/var/run/mysqld/socks.

Reply View the author
yulc
deepin
2024-06-26 19:52
#4
deepinuser17
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.6G  3.2M  1.6G   1% /run
tmpfs           7.8G  2.5M  7.8G   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs           1.6G  108K  1.6G   1% /run/user/1001

把sock设置到/var/run/mysqld/socks.

也没有用,重启后还是消失了

Reply View the author
deepinuser17
deepin
2024-06-27 10:29
#5

/var/run 是 /run 的链接. 和 /run 是一样的, 都是临时的文件目录.

$ ls -ld /var/run
lrwxrwxrwx 1 root root 4 Apr 17  2023 /var/run -> /run

解决办法是 创建一个目录, /var/lib/mysqld, 然后设sock 路径为, /var/lib/mysqld/mysqld.sock.

sudo mkdir /var/lib/mysqld
sudo chown mysql.mysql /var/lib/mysqld
sudo chmod 0700 /var/lib/mysqld
sudo ln -s /home/soft/mysql-8.4.0/mysql.sock /var/lib/mysqld/mysqld.sock
Reply View the author