想了解安卓手机改造服务器——解决chroot下无法使用systemctl的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于安卓手机改造为linux服务器的相关问题,此外,我们还将为您介绍关于C
想了解安卓手机改造服务器——解决chroot下无法使用systemctl的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于安卓手机改造为linux服务器的相关问题,此外,我们还将为您介绍关于CentOS 7上利用systemctl添加自定义系统服务、centos7 使用 systemctl 设置 tomcat9 服务、CentOS7 增加tomcat 启动、停止(使用systemctl进行配置)、centos7x 使用 systemctl 设置 tomcat 服务的新知识。
本文目录一览:- 安卓手机改造服务器——解决chroot下无法使用systemctl(安卓手机改造为linux服务器)
- CentOS 7上利用systemctl添加自定义系统服务
- centos7 使用 systemctl 设置 tomcat9 服务
- CentOS7 增加tomcat 启动、停止(使用systemctl进行配置)
- centos7x 使用 systemctl 设置 tomcat 服务
安卓手机改造服务器——解决chroot下无法使用systemctl(安卓手机改造为linux服务器)
在Linux Deploy中安装的CentOS7无法使用
systemctl
命令,没关系我们有其他办法
写在前面
对于这个问题,我也是第一次遇见。并没有深入研究,所有如果有哪些地方有问题,欢迎指正。
问题描述
当我们使用systemctl
启动服务时它提示我们
[root@localhost ~]# systemctl start mariadb
Running in chroot,ignoring request.
或者使用service
时
[root@localhost ~]# service mariadb start
Redirecting to /bin/systemctl start mariadb.service
Running in chroot,ignoring request.
解决办法
参考文章:https://github.com/smaknsk/servicectl
安装
wget https://github.com/smaknsk/servicectl/archive/1.0.tar.gz
tar -xf 1.0.tar.gz -C /usr/local/lib/
ln -s /usr/local/lib/servicectl-1.0/servicectl /usr/bin/servicectl
ln -s /usr/local/lib/servicectl-1.0/serviced /usr/bin/serviced
使用
servicectl
sudo servicectl action service
此命令仅执行文件 /usr/lib/systemd/system/${service}.service
中的${action}
, 如果通过的操作启用或禁用,则 servicectl
将在 ${service}.service
上创建或删除symlink
以供使用服务。
参数:
- action - 可以是 {
start
,stop
,restart
,reload
,enable
,disable
} - service -在
/usr/lib/systemd/system/
文件夹中的文件
serviced
sudo serviced action
此命令执行 ${action}
为所有启用服务。
参数:
- action -默认是
start
,也可以是: {start
,disable
}
例如
# inside chroot
sudo servicectl enable mariadb
# outside chroot:
# init startup and run all enabled daemons
sudo chroot /path/to/chroot serviced
如果你知道更好的做法,请留下你的做法
CentOS 7上利用systemctl添加自定义系统服务
CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,说实在的,变的简单而易用了许多。
下面我们以利用forever来实现Node.js项目自启动为例,初探CentOS 7的systemctl。
前提:Node.js环境已配置成功,forever包安装成功,有一个能跑的Node.js程序。
CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下
每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],我写的这个服务用于开机运行Node.js项目,具体内容如下:
- [Unit]
- Description=xiyoulibapi
- After=network.targetremote-fs.targetnss-lookup.target
- [Service]
- Type=forking
- PIDFile=/node.js/pid
- ExecStart=/usr/local/bin/foreverstart/node.js/xiyoulib/bin/www
- ExecReload=/usr/local/bin/foreverrestart/node.js/xiyoulib/bin/www
- ExecStop=/usr/local/bin/foreverstop/node.js/xiyoulib/bin/www
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别
[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install]部分是服务安装的相关设置,可设置为多用户的
服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行配置了
首先,使用systemctl start [服务名(也是文件名)]可测试服务是否可以成功运行,如果不能运行则可以使用systemctl status [服务名(也是文件名)]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。
接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。
我的脚本编写方法参照了Nginx的编写方法,也可以根据其他功能类似的程序。
这样看来,虽然systemctl比较陌生,但是其实比init.d那种方式简单不少,而且使用简单,systemctl能简化的操作还有很多,现在也有不少的资料,看来RHEL/CentOS比其他的Linux发行版还是比较先进的,此次更新也终于舍弃了Linux 2.6内核,无论是速度还是稳定性都提升不少。
转载请注明出处:http://blog.csdn.net/yuanguozhengjust/article/details/38019923
centos7 使用 systemctl 设置 tomcat9 服务
CentOS7 开始,从 /etc/init.d 脚本改为了 systemctl 管理服务。
本文记录了把 tomcat9 加入 systemd 管理的步骤。
1. 首先,需要为 tomcat 配置 pid。
# cd /usr/local/tomcat//usr/local/tomcat/apache-tomcat-9.0.21/bin
# ls
编辑 catalina.sh 脚本文件
# vim catalina.sh
# Get standard environment variables
PRGDIR=`dirname "$PRG"`
# Only set CATALINA_HOME if not already set
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
# Copy CATALINA_BASE from CATALINA_HOME if not already set
[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
#添加的 pid
# setting tomcat.pid
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
2. 创建 tomcat.service 文件
# cd /usr/lib/systemd/system
# vim tomcat.service
文件内容
##########################################################
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/java/jdk1.8.0_211"
Environment="CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.0.21"
PIDFile=/usr/local/tomcat/apache-tomcat-9.0.21/tomcat.pid
ExecStart=/usr/local/tomcat/apache-tomcat-9.0.21/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
##########################################################
3. 修改 tomcat.service 文件后需要执行下面命令使其生效:
# systemctl daemon-reload
启动 tomcat 服务
systemctl start tomcat.service
设置开机自启动
systemctl enable tomcat.service
停止开机自启动
systemctl disable tomcat.service
查看服务当前状态
systemctl status tomcat.service
重新启动服务
systemctl restart tomcat.service
查看所有已启动的服务
systemctl list-units --type=service
CentOS7 增加tomcat 启动、停止(使用systemctl进行配置)
1,centos7 使用 systemctl 替换了 service命令
参考:redhat文档:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html#sect-Managing_Services_with_systemd-Services-List
查看全部服务命令:
systemctl list-unit-files –type service
查看服务
systemctl status name.service
启动服务
systemctl start name.service
停止服务
systemctl stop name.service
重启服务
systemctl restart name.service增加开机启动
systemctl enable name.service
删除开机启动
systemctl disable name.service
其中.service 可以省略。
2,tomcat增加启动参数
tomcat 需要增加一个pid文件
在tomca/bin 目录下面,增加 setenv.sh 配置,catalina.sh启动的时候会调用,同时配置java内存参数。
复制代码
代码如下:
#add tomcat pid
CATALINA_PID=”$CATALINA_BASE/tomcat.pid”
#add java opts
JAVA_OPTS=”-server -XX:PermSize=256M -XX:MaxPermSize=1024m -xms512M -Xmx1024M -XX:MaxNewSize=256m”
3,增加tomcat.service
在/usr/lib/systemd/system目录下增加tomcat.service,目录必须是绝对目录。
复制代码
代码如下:
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/data/tomcat/tomcat.pid
ExecStart=/data/tomcat/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[unit]配置了服务的描述,规定了在network启动之后执行。[service]配置服务的pid,服务的启动,停止,重启。[install]配置了使用用户。
4,使用tomcat.service
配置开机启动
systemctl enable tomcat
启动tomcat
systemctl start tomcat
停止tomcat
systemctl stop tomcat
重启tomcat
systemctl restart tomcat
因为配置pid,在启动的时候会再tomcat根目录生成tomcat.pid文件,停止之后删除。
同时tomcat在启动时候,执行start不会启动两个tomcat,保证始终只有一个tomcat服务在运行。
多个tomcat可以配置在多个目录下,互不影响。
centos7x 使用 systemctl 设置 tomcat 服务
CentOS7 开始,从 /etc/init.d 脚本改为了 systemctl 管理服务。
本文记录了把 tomcat8 加入 systemd 管理的步骤。
1. 首先,需要为 tomcat 配置 pid。
# cd /usr/local/tools/apache-tomcat-8.5.29/bin
# ls
编辑 catalina.sh 脚本文件
# vim catalina.sh
添加 CATALINA_PID="$CATALINA_BASE/tomcat.pid",如上图
2. 创建 tomcat.service 文件
# cd /usr/lib/systemd/system
# vim tomcat.service
文件内容
********************************************************************************************************
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/tools/jdk1.8.0_161"
PIDFile=/usr/local/tools/apache-tomcat-8.5.29/tomcat.pid
ExecStart=/usr/local/tools/apache-tomcat-8.5.29/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
********************************************************************************************************
Environment="JAVA_HOME=/usr/local/tools/jdk1.8.0_161" 这里要配置环境变量,在 /etc/profile 中的配置在系统服务中不生效。
3. 设置为开机启动
# systemctl enable tomcat.service
4. 修改 tomcat.service 文件后需要执行下面命令使其生效:
# systemctl daemon-reload
启动 tomcat 服务
systemctl start tomcat.service
设置开机自启动
systemctl enable tomcat.service
停止开机自启动
systemctl disable tomcat.service
查看服务当前状态
systemctl status tomcat.service
重新启动服务
systemctl restart tomcat.service
查看所有已启动的服务
systemctl list-units --type=service
这里有一个坑,就是 centos7 部署 tomcat8,启动 tomcat 的时候会发现启动很慢,经过查询发现
主要原因:
就是通过随机数生成秘钥的时候卡住了,导致 Tomcat 启动慢或失败。
解决办法:
1)在 Tomcat 环境中解决 配置完成不生效;
可以通过配置 JRE 使用非阻塞的 Entropy Source。
在 catalina.sh 中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入后再启动 Tomcat,整个启动耗时下降到 Server startup in 2912 ms。
2)【已验证】在 JVM 环境中解决
打开 $JAVA_PATH/jre/lib/security/java.security 这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom
第二种方法亲自测试可用~
今天关于安卓手机改造服务器——解决chroot下无法使用systemctl和安卓手机改造为linux服务器的讲解已经结束,谢谢您的阅读,如果想了解更多关于CentOS 7上利用systemctl添加自定义系统服务、centos7 使用 systemctl 设置 tomcat9 服务、CentOS7 增加tomcat 启动、停止(使用systemctl进行配置)、centos7x 使用 systemctl 设置 tomcat 服务的相关知识,请在本站搜索。
本文标签: