- 论坛徽章:
- 2
|
本帖最后由 yaoyefengyun 于 2015-08-18 12:24 编辑
我写了一个简单的挂载程序,通过系统自带 httpd cgi 对磁盘分区进行挂载,
第一次执行时,发现程序提示挂载成功,再次执行则提示"Device or resource busy",
但这时手动执行 mount 或 cat /proc/mounts 根本看不到挂载信息;
网上没能查找相关信息,历经了些波折,发现:
取消httpd开机启动,使用 httpd 命令启动,再通过 cgi 挂载,没问题;
然后想到了 systemd 使用了CGroup 技术跟踪子进程,于是设置为开机启动 httpd,通过 cgi 挂载,发现:
[root@centos 1260]# pwd
/proc/1260
[root@centos 1260]# grep lv0 /proc/mounts mounts
mounts:/dev/mapper/p0-lv0 /mnt/volume0 xfs rw,relatime,attr2,inode64,noquota 0 0
[root@centos 1260]#
1026 是 httpd 的进程ID,可以看出分区 lv0 挂载只影响了 httpd,并没有对整个系统起作用,这个该怎么办啊?
网上这方面的信息也少得可怜
解决办法:
将/usr/lib/systemd/system/httpd.service文件中 PrivateTmp=true 这一行用#注释掉,或者改为false;
在查资料的过程中,发现systemd可以限制非root用户CPU、内存使用率等,也可用于限制单个程序,具体的没细看,只好等有时间再系统学习了。 |
|