Answers:
pid文件由某些程序编写,以在启动时记录其进程ID。这有多个目的:
kill
在要结束脚本时发出简单的命令。当然,仅存在pid文件并不能保证该特定进程的ID正在运行,因此,此方法不是100%可靠的,但是在许多情况下“足够好”。除非您要依赖ps
实用程序,否则检查进程表中是否存在特定的PID并不是完全可移植到类似UNIX的操作系统上,在所有实例中调用该实用程序可能都不可取(而且我相信某些类似UNIX的操作系统ps
无论如何都要实施)。
程序使用锁定文件来确保程序的两个(行为良好)单独的实例(它们可能同时在一个系统上运行)不会同时访问其他对象。这个想法是在程序访问其资源之前,它检查是否存在锁定文件,如果锁定文件存在,则出错或等待其消失。当它不存在时,想要“获取”资源的程序将创建文件,然后稍后可能遇到的其他实例将等待此过程完成。当然,这假定“获取”锁的程序实际上确实释放了该锁,并且不会忘记删除锁文件。
之所以可行,是因为在所有类似UNIX的操作系统下,文件系统都执行序列化,这意味着在任何给定时间实际上仅对文件系统进行一次更改。诸如此类的数据库锁。
这些文件通常由守护程序使用,应仅在系统上运行一次。PID文件通常包含已经启动并正在运行的程序的进程ID号(如果存在)。另外,启动时会创建锁定文件。只要锁文件存在,没有用户干预它就不会启动另一个文件。如果锁定文件存在并且pid文件中提到的进程ID没有运行,则该守护程序被视为处于“死”状态,这意味着该守护程序应该正在运行,但可能不是由于崩溃或关闭不当引起的。这可能会为某些程序启动特殊的启动/重启方案。正确关闭它将会删除锁定文件。
PID文件将包含正在运行的进程的进程ID。这有多种用途。您可以阅读并检查该进程是否仍在运行,并采取适当的措施或阅读并杀死该进程。
锁定文件很可能是特定于应用程序的。锁定文件用于指示某些资源正在使用中,并且想要访问的进程应等到资源释放后再继续。
.lck
VM目录中的文件,否则在尝试启动该文件时会告诉您该文件正在使用中。