centos7 中文问题和自启动脚本

文章目录[x]
  1. 1:中文乱码问题
  2. 2:开机自启动脚本
  3. 2.1:开启自启某项服务
  4. 2.2:开机自启脚本
  5. 2.3:自定义服务
  6. 3:docker自启动执行脚本
  7. 4:

中文乱码问题

默认的docker中的centos并不支持中文,而且我谷歌了一大堆,默认的方法都没啥用,最后终于找到解决办法,所以在这里记录下。

#先判断是否下载了中文编码(看下有没有zn_CH开头的)
locale -a
######如果是下面这样说明不支持中文
[root@f6179ac439f2 /]# locale -a
C
POSIX
en_US.utf8
######
#安装语言包
yum install kde-l10n-Chinese -y
#更新gitbc包(防止镜像阉割了该包的部分功能)
yum reinstall glibc-common -y
#设置系统语言包
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
#在/etc/profile/中新加 
export LC_ALL="zh_CN.UTF-8"
export LANG="zh_CN.UTF-8"
#环境生效(这一步可能出错,不过我们可以不管它)
source /etc/profile
#设置一下/etc/locale.conf,在里面加上
LANG="zh_CN.UTF-8"
#然后自己重启下容器,在进来,如果发现还是没用,在更新一下环境
source /etc/profile

 

开机自启动脚本

我自己到网上查了一下,发现docker是没有什么开机和关机的概念的,所以我写在这里没用,不过还是在这里写一下把,以后或许用的着。

开启自启某项服务

centos中开机自启某项服务非常方便,只需要下面两个命令就可以了

systemctl enable jenkins.service #设置jenkins服务为自启动服务
sysstemctl start  jenkins.service #启动jenkins服务

开机自启脚本

首先我们先写好脚本

注意:description必须要写,要不然无法加到自启列表里面

#!/bin/bash
#description:开机自启脚本
/usr/local/tomcat/bin/startup.sh  #启动tomcat

 

方法1

#赋予脚本可执行权限(/opt/script/autostart.sh是你的脚本路径)
chmod +x /opt/script/autostart.sh

#打开/etc/rc.d/rc.local或/etc/rc.local文件,在末尾增加如下内容
su - user -c '/opt/script/autostart.sh'

#在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
chmod +x /etc/rc.d/rc.local

方法2

#将脚本移动到/etc/rc.d/init.d目录下
mv  /opt/script/autostart.sh /etc/rc.d/init.d

#增加脚本的可执行权限
chmod +x  /etc/rc.d/init.d/autostart.sh

#添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
chkconfig --add autostart.sh
chkconfig autostart.sh on

自定义服务

1.写服务文件

[Unit]:服务的说明
Description:描述服务
After:描述服务类别

[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户

示例:nginx.service

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

redis.service

[Unit]
Description=Redis
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
ExecStop=kill -INT `cat /tmp/redis.pid`
User=www
Group=www

[Install]
WantedBy=multi-user.target

#保存服务(754权限,在下面这个文件夹里)
/usr/lib/systemd/system 
#设置开机自启
systemctl enable nginx.service 

#其他命令
#启动服务
systemctl start nginx.service
#设置开机自启动
systemctl enable nginx.service
#停止开启自启
systemctl disable nginx.service
#查看服务状态
systemctl status nginx.service
#重启服务
systemctl restart nginx.service
#查看所有已经启动的服务
systemctl list-units --type=service

 

docker自启动执行脚本

docker比较特殊,我们可以使用下面的方法。

#用下面的命令打开一个容器就可以了
docker run -d -it  -p 8889:8889  bcde81929337  /bin/bash -c "bash -i /root/notebook/autorun.sh;/bin/bash"
#-c 参数就是容器启动时要执行的命令。后面 /bin/bash的作用就是让容器一直保持运行状态
#bash -i的命令是以交互式指令执行,我们这里不加-i的话就无法使conda生效
#bash后面跟的是容器内的自启动脚本,自己提前在容器里面写好久可以了

当然还有一种方法:通过DockerFile重新构建镜像,指定启动运行的服务

我们需要自己新建一个dockerfile,然后写下面的命令

FROM centos

MAINTAINER Johnnian<johnnian@126.com>

RUN <填写构建Docker时需要运行的命令>

ENV  MYENV /XX/XX

CMD <容器每次启动时运行的命令, 只能有一个CMD>

自己打包镜像的时候输入下面的命令

docker build -t 镜像名:标签 <Dockerfile所在的目录>

 

 

 

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00