linux开机启动设置方法

开机启动最简单的方法是在/etc/rc.local启动脚本中写入需要执行的命令。另一种方式是在/etc/init.d中编写一个启动脚本。但是这两种方式都不是正规的启动模式。init.d是Linux最早的服务管理方案,命令service start xxx就是去调用init.d中的启动脚本。之后init机制被systemd系统取代。linux的1号进程由init替换为systemd。systemd是system daemon的缩写,意思是系统的守护者。systemd提供了一组工具和机制来管理Linux的服务。例如systemctl与journalctl都是systemd命令。本文主要介绍如何使用systemd机制设置开机启动。systemd基础知识参考阮一峰的博客

首先需要在/lib/systemd/system/中添加一个文件。本例中我们要为neo4j数据库配置开机自启动,添加文件neo4j.service。写入

[Unit]
Description=Neo4j Graph Database

[Service]
Type=forking
User=root
Group=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/lib/neo4j-community-4.4.28/bin/neo4j start
ExecReload=/usr/local/lib/neo4j-community-4.4.28/bin/neo4j restart
ExecStop=/usr/local/lib/neo4j-community-4.4.28/bin/neo4j stop
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

然后执行systemctl enable neo4j.service。这个命令会创建一个软连接,将neo4j.service链接到/etc/systemd/system/multi-user.target中,这样neo4j被设定为开机任务之一了。如果不重启也可以使用systemctl start neo4j.service直接启动neo4j数据库。

1. 配置中可能出现的问题

1.1 Permission deny

一开始配置的时候,不能启动neo4j。使用journalctl -r -g neo4j倒序观察与neo4j相关的系统日志。纵使发现启动命令Permission deny。这个问题有两种可能的原因。有可能是启动用户配置错误,service下的User和group应当与与neo4j程序的owner一致,本例中都是root。

第二个原因是SELinux限制了权限。即使是root用户,如果selinux检查文件不安全也会禁止启动。可以将启动程序所在的文件夹标记为安全文件。使用命令restorecon -rv /usr/local/lib/neo4j-community-4.4.28标记neo4j安装目录下的所有文件。

1.2 启动成功,但是程序很快退出

这个错误非常隐晦。采用systemctl status neo4j查询neo4j状态,虽然显示succeed,但是状态时inactive,并且提示exit。无论restart,start都没有用。这个原因时Service的Type没有设置正确。simple其实是脚本启动,启动完成后脚本程序就结束了。一般服务是在脚本中使用nohup,或者在程序中创建了daemon进程。但是neo4j程序没有这样做。所以启动之后,systemd又停止了命令。对于这种情况,应该将type设定为forking。这种启动方式会fork一个进程执行启动命令,然后主进程推出,子进程作为daemon进程。

相关推荐

  1. linux开机启动设置方法

    2024-03-21 22:38:02       48 阅读
  2. linux开机启动方法

    2024-03-21 22:38:02       43 阅读
  3. Linux 设置一个程序开机启动的几种方式

    2024-03-21 22:38:02       39 阅读
  4. Linux设置nginx开机启动

    2024-03-21 22:38:02       52 阅读
  5. linux设置开机启动慎用nohup

    2024-03-21 22:38:02       43 阅读
  6. Linux设置开机启动脚本

    2024-03-21 22:38:02       34 阅读
  7. Linux 创建一个service并设置开机启动

    2024-03-21 22:38:02       69 阅读
  8. linux系统中设置redis开机启动

    2024-03-21 22:38:02       61 阅读
  9. linux系统中设置nginx开机启动

    2024-03-21 22:38:02       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 22:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 22:38:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 22:38:02       82 阅读
  4. Python语言-面向对象

    2024-03-21 22:38:02       91 阅读

热门阅读

  1. 二、Eureka注册中心

    2024-03-21 22:38:02       44 阅读
  2. C语言—用题目辨析gets()与scanf()

    2024-03-21 22:38:02       38 阅读
  3. vue01

    2024-03-21 22:38:02       47 阅读
  4. SystemServer的面试题目

    2024-03-21 22:38:02       39 阅读
  5. 二、Spring源码学习之prepareRefresh方法

    2024-03-21 22:38:02       46 阅读
  6. 【LeetCode-46.全排列】

    2024-03-21 22:38:02       41 阅读
  7. RecyclerView万能适配器之BaseQuickAdapter方法详解

    2024-03-21 22:38:02       41 阅读
  8. Python PEP 8 代码风格指南

    2024-03-21 22:38:02       39 阅读