无法将应用程序作为服务启动,但作为独立进程运行很简单

Raj*_*pta 4 permissions services 12.04 cassandra

对于服务,虽然存在pid文件,但在尝试启动服务时仍然失败,提示:

$ sudo service cassandra start
* could not access pidfile for Cassandra
Run Code Online (Sandbox Code Playgroud)

我验证了文件夹权限/var/run(其所有者是 root)并且子文件夹 cassandra 归 cassandra 用户所有,但是即使我验证了 pid 文件存在,该服务仍然无法访问 pid 文件。(还分配了pid)。那么为什么它说它无法访问pidfile?

并且cassandra作为独立进程运行可以正常工作,但不仅仅是使用service cassandra start

$ sudo ls -l /var/run/cassandra 
total 4 
-rw-r--r-- 1 cassandra cassandra 4 Mar 18 07:33 cassandra.pid
$ sudo su
# ls -ld /var/run/cassandra 
dr--r----- 2 cassandra cassandra 60 Mar 18 07:38 /var/run/cassandra
Run Code Online (Sandbox Code Playgroud)

我如何使这项工作使用sudo service cassandra start

Dan*_*ela 5

您必须删除/var/run/cassandra文件夹,因此它具有错误的权限:

sudo rm -rf /var/run/cassandra
Run Code Online (Sandbox Code Playgroud)

或者您可以手动修复权限:

sudo chmod 750 /var/run/cassandra
Run Code Online (Sandbox Code Playgroud)

然后启动 Cassandra 作为服务:

sudo service cassandra start
Run Code Online (Sandbox Code Playgroud)


一些解释

您可以在此处找到文件权限说明。

  • 删除该文件夹是安全的,因为它使用正确的权限和内容重新创建。但是一旦它工作正常就不要删除它。这可能会导致数据丢失或错误行为。

  • chmod 750解密为 rwxr-x--- 权限。它允许对用户进行读写执行,对组进行读取执行,而对其他人则不允许。对于 Cassandra,这样设置权限就足够了。