😄作者简介:
小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

🔥背景

露胳膊露的季节要到了,几个小伙伴开始约着一块锻炼,因为每天还要忙工作,我们就合计着周一、三、五 中午锻炼,周二、四晚上锻炼,以防忘记,所以就想着搞个定时提醒。基于此,我就搞了个定时器每天发送提醒消息到企业微信。主要使用的是Launchctl工具定时执行脚本。

🔥Launchctl概述

Launchctl 是 Mac 和 iOS 系统中的一个工具,用于管理应用程序的启动和停止。通过系统调用和命令行参数来实现。使用Launchctl充当定时器最合适不过了。

Launchctl常用命令可以在控制台直接输入launchctl回车即可看到相关参数,但是常用的命令有

launchctl list
launchctl load ~/Library/LaunchAgents/local.demo.plist
launchctl unload ~/Library/LaunchAgents/local.demo.plist
launchctl stop ~/Library/LaunchAgents/local.demo.plist
//如果任务被修改了,必须先unload,然后重新执行load

🔥plist文件是什么

.plist 文本文件是macOS应用程序使用的设置文件,也成为属性文件,采用XML格式,MacOS中的启动项都会以.plist的文件形式存储在系统的Library目录中,常用于存储应用程序的设置、配置数据等。

🔥定时器实战

第一步:创建企业微信机器人

右击群—>管理聊天消息—>添加群机器人—>新创建一个机器人

第二步:获取webhook地址

点击新创建的机器人,会看到机器人的webhook地址

在这里插入图片描述

第三步:编写python脚本

主要逻辑是:周一、三、五发送中午锻炼,周二、四发送晚上锻炼,具体内容如下:

#! /usr/bin/python3
import types
import requests
import json
import datetime

# Webhook地址
webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=95c150-d7e3a5e01649"

#获取今天周几
today = datetime.datetime.now().weekday()+1
print(today)

# 构造要发送的消息
if today in[1,3,5]:#周一、三、五
    text = {
        #"content": "这是定时发送的群消息,发送时间:%s" % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
        "content": "呼叫各位将士,今天是周%s,别忘记中午锻炼哦" % today,
        "mentioned_list": ["@all"]
    }
elif today in [2,4]:#today in[2,4]:#周二、四
    text = {
        "content": "呼叫各位将士,今天是周%s,别忘记晚上锻炼哦" % today,
        "mentioned_list": ["@all"]
    }
data = {
    "msgtype": "text",
    "text": text
}
headers = {'Content-Type': 'application/json'}
# 发送消息
response = requests.post(url=webhook_url, headers=headers, data=json.dumps(data))
# 输出结果
print(response.text)

第四步:编写shell脚本

名为run.sh,具体内容如下,主要是执行上述python脚本

#!/bin/sh
# 记录一下开始时间
echo `date` >> /Users/呼啦圈/log &&
# 进入helloworld.py程序所在目录
cd /Users/呼啦圈 &&
# 执行python脚本(注意前面要指定python运行环境/usr/bin/python,根据自己的情况改变)
/usr/local/bin/python3.9 demo.py
# 运行完成
echo 'finish' >> /呼啦圈/log

第五步:编写.plist文件

在~/Library/LaunchAgents目录下创建一个local.demo.plist文件,输入要执行的脚本以及定时发送时间,可以参考如下内容

(~/Library/LaunchAgents: 用户自定义的用户启动项)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <!-- Label唯一的标识 -->
  <key>Label</key>
  <string>local.demo.plist</string>
  <!-- 指定要运行的脚本 -->
  <key>ProgramArguments</key>
  <array>
    <string>/Users/呼啦圈/run.sh</string>
  </array>
  <!-- 指定要运行的时间 -->
  <key>StartCalendarInterval</key>
  <dict>
        <key>Minute</key>
        <integer>10</integer>
        <key>Hour</key>
        <integer>10</integer>
  </dict>
<!-- 标准输出文件 -->
<key>StandardOutPath</key>
<string>/Users/呼啦圈/run.log</string>
<!-- 标准错误输出文件,错误日志 -->
<key>StandardErrorPath</key>
<string>/Users/呼啦圈/run.err</string>
</dict>

第六步:执行命令

launchctl load ~/Library/LaunchAgents/local.demo.plist

如果执行报错,则执行unload,再执行load

#卸载
launchctl unload ~/Library/LaunchAgents/local.demo.plist

在这里插入图片描述

当到预定的时间点后,企业微信就会受到预设的消息,例如

在这里插入图片描述

以实战为线索,逐步深入Jenkins各个环节,由入门到精通,秒级解决工作问题。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐