关于Linux查看系统及版本信息的命令lsb_release命令以及Centos7中将redis服务写入systemctl服务

一、关于Linux查看系统及版本信息的命令lsb_release命令

    linux查看系统是centos还是ubuntu,之前一直使用uname -a以及cat /etc/issue。但在某个服务器上发些这些都不行。有一个更好用的命令:lsb_release -a。如执行时提示-bash: lsb_release: 未找到命令,使用命令安装:yum install -y redhat-lsb。

    LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。一般使用-a选项展示所有选项信息即可。其它选项参数可以忽略。如果当前发行版是LSB兼容的,那么/etc/lsb-release(注意这里是中划线)文件中会包含LSB_VERSION域。这个域的值可以是用冒号隔开的一系列支持的模块。这些模块名是当前版本支持的LSB的模块名。如果当前版本不是LSB兼容的,就不包含这个域。

#CENTOS中
[root@node1484 tools]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:    CentOS
Description:    CentOS Linux release 7.2.1511 (Core) 
Release:    7.2.1511
Codename:    Core
#UBUNTU中
[root@node1484 tools]# lsb_release -a
LSB Version:    core-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic

    lsb_release -a命令查看其执行文件发现其就是查找了/etc下面的很多配置信息,这个没有找那个,综合一些常见的系统最后取出版本信息。比如发现在centos中存在/etc/lsb-release.d/这个目录,但是不存在 /etc/lsb-release这个文件,而是存在/etc/centos-release文件,里面即是系统信息。不存在还会查看/etc/debian_version文件。

    可见lsb_release -a命令就是将各系统中存放系统版本信息的文件名综合起来,串行判断,对用户而言,可以避免去猜测这个配置的文件名称是什么。

二、Centos7中将redis服务写入systemctl服务

    CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,比起原来的service和config两套命令,systemd整合了service和config的功能。Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。先安装一下redis,我这里是redis-6.2.3版本,不多说命令如下:

# 下载安装redis.
$ cd /usr/local/redis
$ wget https://download.redis.io/releases/redis-6.2.3.tar.gz
$ tar xzf redis-6.2.3.tar.gz
$ cd redis-6.2.3
$ make

# 安装完成之后添加快捷方式进/usr/bin中以方便后期使用redis-cli。
$ cd /usr/local/redis
$ mkdir etc
$ cp redis-6.2.3/redis.conf etc/
$ ln -s /usr/local/redis/redis-6.2.3/src/redis-server /usr/bin/redis-server
$ ln -s /usr/local/redis/redis-6.2.3/src/redis-cli /usr/bin/redis-cli

    这时redis就可以通过 redis-server /usr/local/redis/etc/redis.conf启动了。然后我们开始将其写入systemd中。进入/usr/lib/systemd/system/目录中,创建redis.service文件,.service文件定义一个服务,分为[Unit],[Service],[Install]三个部分,需要更改的就基本只有ExecStart这一行,即是你本机的redis启动命令。另外PIDFile保持和redis配置文件中一样。

$ cd /usr/lib/systemd/system/
$ vim redis.service
[Unit]
Description=Redis #描述内容
#在哪些服务启动之后启动
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
#PIDFile和redis.conf配置中一致
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-6.2.3/src/redis-server /usr/local/redis/etc/redis.conf
#重新加载和停止服务的命令
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

#系统以默认多用户方式启动时,此服务自动运行。
[Install]
#Alias:服务别名
WantedBy=multi-user.target

    保存好之后开始操作systemctl,首先要执行 systemctl daemon-reload 命令,重载systemd配置以引入redis.service。然后使用命令将redis.service加进开机启动:systemctl enable redis.service。完成之后我们就可以启动redis服务。systemctl start redis.service。

    发现redis.service启动启来了,但碰到一个问题,systemctl start redis.service执行之后就阻塞在那里,后台服务配置相关肯定有问题。在redis的配置文件中可以看到有两项配置daemonize和supervised,配置文件中说,如果以systemd启动daemonize配置将不会有什么影响(但我测试发现并不是这样)。应该同时修改daemonize yes和修改supervised配置。建议使用auto或者systemd。这两项配置修改掉任何一项发现systemctl start redis.service都会被阻塞运行:

# When Redis is supervised by upstart or systemd, this parameter has no impact.
daemonize yes
#If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
#supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#supervised auto    - detect upstart or systemd method based on UPSTART_JOB or NOTIFY_SOCKET environment variables
supervised auto

systemctl其它命令:

查看服务是否设置开机启动: systemctl is-enabled redis.service
查看服务是否启动: systemctl is-active redis.service
禁止服务开机启动: systemctl disable redis.service
列出已经启动的unit: systemctl list-units (也可直接:systemctl) 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值