写个服务,写完后放在/lib/systemd/system路径下

update_rule.server

[Unit]
Description = TinyScan update rule [Service]
Type=forking
WorkingDirectory=/root/TinyScan_Auto_Deploy/init_cve
ExecStart=/root/TinyScan_Auto_Deploy/init_cve/start.sh start
ExecStop=/root/TinyScan_Auto_Deploy/init_cve/start.sh stop
ExecReload=/root/TinyScan_Auto_Deploy/init_cve/start.sh restart
Restart=always [Install]
WantedBy=multi-user.target

start.sh

#!/bin/bash

SERVICE_NAME="update-rule"
#CONFIG_NETCARD_NAME=`cat /tinyscan/config/config.ini | grep -zo '\[config_net_card\]\sname=.*' | sed -n '2p' | awk -F '=' '{print $2}'`
#SERVER_NETCARD_NAME=`cat /tinyscan/config/config.ini | grep -zo '\[net_card\]\sname=.*' | sed -n '2p' | awk -F '=' '{print $2}'` pid=`ps -ef | grep 'python3 /root/TinyScan_Auto_Deploy/init_cve/update_rule.py' | grep -v 'grep' | awk '{print $2}'` up()
{
# if [ ${CONFIG_NETCARD_NAME} != ${SERVER_NETCARD_NAME} ]; then
# iptables -A INPUT -i ${SERVER_NETCARD_NAME} -p tcp --dport 1080 -j DROP
# fi
# source /tinyscan/config/venv/bin/activate
python3 /root/TinyScan_Auto_Deploy/init_cve/update_rule.py &
} down()
{
#if [ ${CONFIG_NETCARD_NAME} != ${SERVER_NETCARD_NAME} ]; then
# iptable -D INPUT -i ${SERVER_NETCARD_NAME} -p tcp --dport 1080 -j DROP
#fi
kill ${pid}
} if [ ! $1 ]; then
echo "Please specify args 'start|restart|stop'"
exit
fi if [ $1 == 'start' ]; then
if [ ! $pid ]; then
up
else
echo "${SERVICE_NAME} is running! pid=$pid"
fi
fi if [ $1 == 'restart' ]; then
if [ $pid ]; then
down
else
sleep 3
up
fi
fi if [ $1 == 'stop' ]; then
if [ $pid ]; then
down
else
echo "${SERVICE_NAME} is stopped"
fi
fi

update_rule.py是一个定时任务

import os

import schedule
import time
import datetime def job1():
os.system('/root/TinyScan_Auto_Deploy/init_cve/sSnvd -u') if __name__ == '__main__':
# schedule.every(10).seconds.do(job1)
schedule.every().day.at('11:00').do(job1)
while True:
schedule.run_pending()

当然单纯的定时任务可以利用crontab来搞定

crontab定时任务

cat /etc/crontab

crontab -e : 编辑定时任务(用户可以省略,默认是当前用户)

crontab -l : 查看定时任务(只查看当前用户的定时任务)

cat /var/log/cron : 可以查看到执行那些定时任务

cat /var/log/messages: 记录系统操作的日志,(例如:用户登录)

Linux环境下给python项目写个启停服务的更多相关文章

  1. Linux 环境下安装python相关

    目录 Linux 环境下安装python相关 linux软件包管理工具之yum工具(如同pip3工具) yum源理解 下载阿里云的.repo仓库文件 ,放到/etc/yum.repos.d/ yum安 ...

  2. 尚学python课程---11、linux环境下安装python注意

    尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...

  3. 尚学linux课程---10、linux环境下安装python

    尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...

  4. Linux环境下第一次提交项目

    Linux环境下第一次提交项目: vi 日记 新增一个文件名为“日记”的文件 git status 工作区的状态 git add 日记 建立跟踪 git commit 提交变更 ----------- ...

  5. linux环境下安装python 3

    说明: 在linux环境下,都默认安装python 2的环境,由于python3在python2的基础上升级较大,所以安装python 3环境用于使用最新的python 3的语法. 安装过程: 1.下 ...

  6. linux环境下的python安装过程

    一.下载python源码包 打开ubuntu下的shell终端,通过wget命令下载python源码包,如下图所示: wget https://www.python.org/ftp/python/3. ...

  7. linux环境下的python安装过程(含setuptools)

    这里我不想采用诸如ubuntu下的apt-get install方式进行python的安装,而是在linux下采用源码包的方式进行python的安装. 一.下载python源码包 打开ubuntu下的 ...

  8. linux环境下安装python

    在linux系统中安装python解释器 打开官网www.python.org 选择合适的版本进行下载 将下载好的压缩包拖入Xshell中,依次输入一下命令即可 tar xf Python-.tar. ...

  9. [Python学习] Linux环境下的Python配置,必备库的安装配置

    1.默认Python安装情况 一般情况,Linux会预装Python的,版本较低,比如Ubuntu15的系统一般预装的是Python2.7.10. 使用命令:which python可以查看当前的py ...

  10. 在Linux环境中运行python 项目

    1首先创建一个虚拟环境或者在一个已有的虚拟环境中创建一个django项目 1.1 创建一个虚拟环境: mkvirtualenv my_django115 这会在 ~/Envs 中创建 my_djang ...

随机推荐

  1. kali linux 使用教程

    kali linux使用教程 前言:Kali Linux 是专门用于渗透测试的linux操作系统,它由BackTrack发展而来,在整合了IWHAX.WHOPPIX和Auditor这三种渗透测试专用L ...

  2. SX【2020.01.09】NOIP提高组模拟赛(day1)

    [2020.01.09]NOIP提高组模拟赛(day1) 这次考得不理想,只做了前两题,后两题没时间做,说明做题速度偏慢. source : 100 + 20 + 0 + 0 = 120 rank7 ...

  3. Vulhub 漏洞学习之:AppWeb

    Vulhub 漏洞学习之:AppWeb 目录 Vulhub 漏洞学习之:AppWeb 1 AppWeb认证绕过漏洞(CVE-2018-8715) 1.1 漏洞利用原理 1.2 漏洞利用过程 1 App ...

  4. 如何用revit+bimfilm快速完成径向动画制作

    推荐:将 NSDT场景编辑器 加入你的3D开发工具链. 在实际的施工中,我们会遇到诸如一些管道保温层包覆的施工内容,所以在制作它们的施工动画时,我们需要用径向剖切保温层来表达管道保温层包覆过程的施工状 ...

  5. QT个人笔记

    1.QT的setCursor(Qt::CrossCursor) 干什么用 ui->View->setCursor(Qt::CrossCursor); setCursor函数用于设置窗口上的 ...

  6. java.io.StreamCorruptedException: invalid stream header: 00013174

    java.io.StreamCorruptedException: invalid stream header: 00013174 at java.io.ObjectInputStream.readS ...

  7. c++ class派生与多态

    目录 类继承和类派生 继承时名字遮蔽 基类和派生类的构造函数 构造函数调用顺序 基类和派生类的析构函数 多重继承 虚继承和虚基类 将派生类赋值给基类(向上转型) 将派生类指针赋值给基类指针. 将派生类 ...

  8. 不用VS,使用NET 7.0 SDK (v7.0.101)编程c#控制台应用程序方法

    摘要:如果没有vs环境,也可以编程c#控制台应用程序学习c#,方法步骤有下面几个步骤. 1.下载NET 7.0 SDK (v7.0.101)安装 网址https://dotnet.microsoft. ...

  9. ASP中把数据导出为Excel的三种方法

    方法一:用excel组件 这种方法利用Excel组件直接导出excel文件,要求服务器端安装有微软office(Excel)程序,否则无法运行. 完整示例如下: Set conn=server.Cre ...

  10. mysql 当年所有月份列表

    -- 不依赖任何表,只是用mysql自带函数方法select concat((select year(now())),'-01') as `date`union select concat((sele ...