前情提要
- 由于本次的功能需求需要在Linux机器每次重启之后运行相应的脚本,因此需要设置开机自启动
- auto_monitor.sh脚本需要root权限
- auto_mykibana.sh脚本需要等待elasticsearch启动之后才能执行
Linux自启动设置
方案一:设置/etc/init.d中的内容,然后使用update-rc.d来进行开机自启动设置
背景知识:
Linux系统的主要启动步骤
# 读取MBR信息,启动Boot Manager # 加载系统内核,启动init进程,init进程使Linux的根进程,所有的系统进程都是它的子进程 # init进程读取 /etc/inittab 文件中的信息,进入预设的运行级别。通常情况 /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是 /etc/rcN.d/ 目录 # 根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindows服务器xorg,Xwindows为Linux的图形界面 # 启动登陆管理器,等待用户登陆Ubuntu中的运行级别
level 0 # 停机 level 1 # 单用户 level 2&3 # 多用户 level 4 # 用户自定义 level 5 # 系统一般运行状态 level 6 # 重启注释:这里写的这些级别这样说可能不太容易理解,但是实际上有一个很简单的理解方式
init 0 # 关机 init 1 # init 2&3 # 开启命令行界面 init 4 # init 5 # 开启图形界面 init 6 # 重启
脚本编写规范及样例,如:xxx.sh
#! /bin/bash ### BEGIN INIT INFO #Provides: touchfile #Required-Start: $all #Required-Stop: $all #Default-Start: 2 3 4 5 #Default-Stop: 0 1 6 #Short-Description: Run Touchfile #Description: Run Touchfile ### END INIT INFO TOUCHFILE="/var/tmp/touch.file" case "$1" in start) echo "Creating $TOUCHFILE" touch $TOUCHFILE ;; stop) echo "Removing $TOUCHFILE" touch $TOUCHFILE ;; restart) echo "Recreating $TOUCHFILE" rm $TOUCHFILE touch $TOUCHFILE ;; reload) echo "Re-Touching $TOUCHFILE" touch $TOUCHFILE ;; *) echo "Usage: touchfile.sh <start|stop|restart|reload>" ;; esac exit 0编写之后的操作
root$: chmod a+x xxx.sh # 使其变成可执行文件 root$: update-rc.d xxx.sh defaults 90 # 添加开机启动项,启动次序为第90个 root$: update-rc.d xxx.sh -f remove # 删除开机启动项
方案二:设置/lib/systemd/system中的内容,编写xxx.service,然后利用systemctl命令设置服务
service的编写规范及样例:
[Unit] Description = start mykibana # 服务描述,随便写 After = network.target # 开机时在网络服务启动后开启 [Service] User = root # 服务开启用户类型 ExecStart = /bin/sh /home/mykibana.sh # 服务具体执行内容 [Install] WantedBy = multi-user.target服务写完后,注册服务的指令及含义:
$: systemctl enable xxx.service # 设置服务开机启动 $: systemctl start xxx.service # 开启服务 $: systemctl stop xxx.service # 关闭服务 $: systemctl disable xxx.service # 删除服务服务注册后,在开机后查看服务的运行状态及日志信息
$: systemctl status xxx # 查看服务的运行状态及日志信息
方案三:对于rc.local进行修改,此处不建议,由于该方案与方案一类似均为兼容性设置,现在的主流设置为方案二
其他内容
pyinstaller将python编译为可执行文件
$: pip install pyinstaller #这里注意不是apt安装 $: pyinstaller -F xxx.py #这里记得加上-F,不然更换路径后就无法找到依赖,这个选项是只生成一个可执行文件 ### 注释:生成的可执行文件在dist目录下更换ssh默认端口
修改/etc/ssh/sshd_config文件
port 22 --> port xxx
ssh互相免认证
首先在两边都生成密钥:
$: ssh-keygen -t rsa然后使用命令将公钥互相拷贝过去:
$: ssh-copyid -i username@ip修改StrictHostKeyChecking ask 中的内容为:
StrictHostKeyChecking no
inotify使用方法
rsync使用方法
这两者结合起来就可以实现文件的实时同步