Linux下/var/run目录下的pid文件作用
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件。而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件。那么这些pid文件有什么作用呢?它的内容又是什么呢?
(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。
用cat命令可以看到。
(2) pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。
(3) 编程技巧:
调用fcntl设置pid文件的锁定F_SETLK状态,其中锁定的标志位F_WRLCK。
如果成功锁定,则写入进程当前PID,进程继续往下执行。
如果锁定不成功,说明已经有同样的进程在运行了,当前进程结束退出。
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
if (fcntl(fd, F_SETLK, &lock) < 0){
//锁定不成功, 退出......
}
sprintf (buf, "%d\n", (int) pid);
pidsize = strlen(buf);
if ((tmp = write (fd, buf, pidsize)) != (int)pidsize){
//写入不成功, 退出......
}
(4) 一些注意事项:
i) 如果进程退出,则该进程加的锁自动失效。
ii) 如果进程关闭了该文件描述符fd, 则加的锁失效。(整个进程运行期间不能关闭此文件描述符)
iii) 锁的状态不会被子进程继承。如果进程关闭则锁失效而不管子进程是否在运行。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
linux安装ssh和开启 ssh服务
1.查看ssh服务的状态 输入以下命令: sudo service sshd status 如果出现 Loaded: error (Reason: No such file or directory) 提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。 如果出现 Active: inactive (dead) 说明已经安装了ssh服务,但是没有开启。按照第三步:开启ssh服务。 2安装ssh服务 安装ssh命令: 如果你用的是redhat,fedora,centos等系列linux发行版,那么敲入以下命令: sudo yum install sshd 或者 sudo yum install openssh-server(由osc网友 火耳提供) 如果你使用的是debian,ubuntu,linux mint等系列的linux发行版,那么敲入以下命令: sudo apt-get install sshd 或者 sudo apt-get install openssh-server(由osc网友 火耳提供) 然后按照提示,安装就好了。 3.开启ssh服务 在终端敲入以下命...
- 下一篇
CentOS7环境下安装Tomcat8
安装Tomcat首先我们需要确定我们的服务器环境是否安装了JDK 如果没有安装我们需要先进行安装JDK,我的上一篇文章中提供了安装JDK的步骤:点击打开链接 CentOs7环境下安装Tomcat需要先下载Tomcat的压缩包,我已经准备好了 TOMCAT8:点击下载 之后我们需要打开XFTP进行上传到我们的服务器,默认路径:(/usr/local/) 然后我们就需要解压TOMCAT进行端口配置 [root@iZbp1fvt1y9koywmbeuexcZ ~]# tar -zxvf apache-tomcat-8.5.16.tar.gz 其实这样我们就可以直接启动了,但是有的服务器好像8080接口不好开,需要备案,在此时我们为了不必要的麻烦我们只需要修改一下Tomcat的端口就行 好了此时配置基本已完成,我们只需要启动Tomcat即可 此时我们去访问发现还是无法访问,我们就需要查看我们的防火墙了,我采取了最简单的方法直接关闭了防火墙 关闭firewall systemctl stop firewalld.service #停止firewall systemctl disable fire...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果