linux crontab -e使用

1. 需求说明:

服务器上运行测试服务,但由于djnago的自带wsgi不稳定,会经常宕机,此时就需要监听端口,当端口关闭时,去重启服务就完成了需求,首先想到了linux自带的定时任务,crontab -e。

2.检测端关闭代码,并重启服务:

import socket
import os
import time


def IsOpen(ip, port):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect((ip, int(port)))
        s.shutdown(2)
        # 利用shutdown()函数使socket双向数据传输变为单向数据传输。shutdown()需要一个单独的参数,
        # 该参数表示了如何关闭socket。具体为:0表示禁止将来读;1表示禁止将来写;2表示禁止将来读和写。
        return True
    except:
        return False


if __name__ == '__main__':
    # # 获取本机电脑名
    # myname = socket.getfqdn(socket.gethostname())
    # # 获取本机ip
    # myaddr = socket.gethostbyname(myname)
    flag = IsOpen('192.168.0.155', 8001)
    if flag:
        print('项目正在运行,不要担心')
    else:
        print(f'项目宕机,立即重启,重启时间:{time.strftime("%Y/%m/%d %H:%M:%S", time.localtime(time.time()))}')
        os.system('python manage.py runserver 0.0.0.0:8001 >> /home/cykj/git_product/logs/log.log 2>&1 &')

3. 使用crontab -e

3.1 第一次打开crontab -e 将要更换编辑器

输入:select-editor 命令

Select an editor. To change later, run 'select-editor'.

  1. /bin/ed
  2. /bin/nano
  3. /usr/bin/vim.tiny

Choose 1-3 [2]: 3

选择3vim编辑器,就可以用:wq保存了。

3.2 问题:

no crontab for cykj - using an empty one
crontab: installing new crontab
解决:使用 crontab -u 当前用户名(cykj) -e ,进行任务编辑,然后wq保存

3.3 编辑任务

*/1 * * * * /home/cykj/my_env/listen_env/bin/python3 /home/cykj/listen/lis.py >> /home/cykj/listen/1.txt
每分钟进行执行python脚本,并将python的输出内容重定向到1.txt中。
3.3.1 时间举例:
    30 21 * * * /etc/init.d/nginx restart
    每晚的21:30重启nginx。
     
    45 4 1,10,22 * * /etc/init.d/nginx restart
    每月1、10、22日的4 : 45重启nginx。
     
    10 1 * * 6,0 /etc/init.d/nginx restart
    每周六、周日的1 : 10重启nginx。
     
    0,30 18-23 * * * /etc/init.d/nginx restart
    每天18 : 00至23 : 00之间每隔30分钟重启nginx。
     
    0 23 * * 6 /etc/init.d/nginx restart
    每星期六晚上的23 : 00 pm重启nginx。

    * */1 * * * /etc/init.d/nginx restart
    每一小时重启nginx
    * 23-7/1 * * * /etc/init.d/nginx restart
    晚上11点到早上7点之间,每 隔一小时重启nginx

    0 11 4 * mon-wed /etc/init.d/nginx restart
    每月的4号与每周一到周三 的11点重启nginx

    0 4 1 jan * /etc/init.d/nginx restart
    一月一号的4点重启nginx

     */30 * * * * /usr/sbin/ntpdate 210.72.145.20
    每30分钟(半小时)同步一下时间
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容