Jenkins Operation not permitted
2019-04-30 本文已影响0人
错乱的三元运算
jenkins 用service SERVICE_NAME start 启动的时候报这个错
先上结论:
/run把这个路径的写权限,给到jenkins用户即可
or
换到root执行吧
出这个问题的时候也没多想,上网先查了下,基本没说啥,所以打算记录下。
问题其实很简单,看输出其实就知道了。
主要实在不愿意切换到root执行,加上shell并不是那么熟,小折腾了一下。
下面总结下知识点:
在Linux系统的目录/run下面有很多文件夹,旗下存储了*.pid文件。那么这些pid文件有什么作用呢?它的内容又是什么呢?
- pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID,用cat命令可以看到。
- pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。
+/run是一个临时文件系统 (tmpfs),存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有/var/run目录,应该让它指向run
这个问题其实切换jenkins所在的用户组也能解决,说到底是个单纯的写权限的问题,简单点,就改了/run的权限吧,当然会有安全问题要注意