精华内容
下载资源
问答
  • php,定时任务,解决方案 篇一在 WINDOWS设置计划任务执行 PHP文件 在WINDOWS设置计划任务执行 PHP文件 在网上找了些 WINDOWS行PHP的计划任务的方法有 一个写得很全可惜在我这竟然没通过最后不得综合各 门派的方法...
  • mac定时任务执行shell脚本运行jar包

    千次阅读 2019-07-01 16:44:12
    1.背景:想用定时任务执行某个脚本然后实现定时发送钉钉机器人消息;...小插曲:查阅了资料,发现mac下并没有像Windows那样直接创建定时任务的功能,不过还是有解决方案的,接下里主角launchctl登场,launchctl...

     

    1.背景:想用定时任务执行某个脚本然后实现定时发送钉钉机器人消息;

    2.构思:楼主是做Android开发的,由于不太懂phyon脚本,便想着用java来构建jar包并用shell脚本执行,然后用系统自带的定时任务执行shell脚本

    小插曲:查阅了资料,发现mac下并没有像Windows那样直接创建定时任务的功能,不过还是有解决方案的,接下里主角launchctl登场,launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。
    launchctl是通过配置文件来指定执行周期和任务的。mac下可把任务信息配置在plist上由launchctl读取

    1.shell脚本编写实现

    Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

    Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

     

    1.1创建tapd_task.jar用来给钉钉群发送机器人定时消息

    具体代码:

        //测试钉钉群
    //    public static String WEBHOOK_TOKEN = "https://oapi.dingtalk.com/robot/send?access_token=a9b02dba00b5ad77e6cffbb45c07b95602f7d9d72f5c11370f130787f93ae08a";
        public static String MESSAGE = "{\n" +
                "\t\"msgtype\": \"link\",\n" +
                "\t\"link\": {\n" +
                "\t\t\"text\": \"当天的工作即将结束,请各位同学更新tapd任务花费及状态等信息(点击此妹纸可直达tapd任务链接 Y(^_^)Y    \",\n" +
                "\t\t\"title\": \"更新tapd任务提示\",\n" +
                "\t\t\"picUrl\": \"https://ws1.sinaimg.cn/large/0065oQSqly1g0ajj4h6ndj30sg11xdmj.jpg\",\n" +
                "\t\t\"messageUrl\": \"https://www.tapd.cn/",\n" +
                "\t\t\"at\": {\n" +
                "\t\t\t\"atMobiles\": [\n" +
                "\t\t\t\t\"156xxxx8827\",\n" +
                "\t\t\t\t\"189xxxx8325\"\n" +
                "\t\t\t],\n" +
                "\t\t\t\"isAtAll\": true\n" +
                "\t\t}\n" +
                "\t}\n" +
                "}";
        public static String MESSAGE2 = "{\n" +
                "\t\"msgtype\": \"text\",\n" +
                "\t\"text\": {\n" +
                "\t\t\"content\": \"请各位同学及时处理!!!\"\n" +
                "\t},\n" +
                "\t\"at\": {\n" +
                "\t\t\"atMobiles\": [\n" +
                "\t\t\t\"156xxxx8827\",\n" +
                "\t\t\t\"189xxxx8325\"\n" +
                "\t\t],\n" +
                "\t\t\"isAtAll\": true\n" +
                "\t}\n" +
                "}";
    
        public static void main(String args[]) throws Exception {
    
    //        HttpClient httpclient = HttpClients.createDefault();
            HttpClient httpclient = createSSLClientDefault();
            HttpPost httppost = new HttpPost(WEBHOOK_TOKEN);
            httppost.addHeader("Content-Type", "application/json; charset=utf-8");
            StringEntity se = new StringEntity(MESSAGE, "utf-8");
            httppost.setEntity(se);
            HttpResponse response = httpclient.execute(httppost);
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                String result = EntityUtils.toString(response.getEntity(), "utf-8");
                System.out.println(result);
            }
    
            HttpClient httpclient2 = HttpClients.createDefault();
            HttpPost httppost2 = new HttpPost(WEBHOOK_TOKEN);
            httppost2.addHeader("Content-Type", "application/json; charset=utf-8");
            StringEntity se2 = new StringEntity(MESSAGE2, "utf-8");
            httppost2.setEntity(se2);
            httpclient2.execute(httppost2);
        }
    
        /**
         * 忽略https证书,1.6的jdk在mac环境下用命令行运行jar包对https的证书兼容有问题
         *
         * @return
         */
        public static CloseableHttpClient createSSLClientDefault() {
            try {
                SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                    // 信任所有
                    public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                        return true;
                    }
                }).build();
                SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
                return HttpClients.custom().setSSLSocketFactory(sslsf).build();
            } catch (KeyManagementException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (KeyStoreException e) {
                e.printStackTrace();
            }
            return HttpClients.createDefault();
        }

    生成jar包的gradle配置:

    apply plugin: 'java-library'
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
    }
    task deleteOldJar(type: Delete) {
       delete 'build/outputs/test.jar'//架包输出路径
    }
    task exportJar(type: Copy) {
       from('build/intermediates/intermediate-jars/release/')//3.0之前的版本是(build/intermediates/bundles/release/)之后发生了变化
       into('build/libs/')//输出路径,自定义
       include('classes.jar')
       rename ('classes.jar', 'tapd_task.jar')//后面的是jar包名,自定义
    }
    
    exportJar.dependsOn(deleteOldJar, build)
    
    sourceCompatibility = "6"
    targetCompatibility = "6"
    

    在Android studio terminal里执行gradle exportJar即可在对应的文件夹里生成shell脚本执行的jar包

    这里的值得一说的就是这个配置

    sourceCompatibility =6

    原先配置里面是

    sourceCompatibility =7

    但是在后面执行tapd.plist时发现系统提示“您需要安装JDK才能使用java命令工具”,之后我在终端里打印

    java -verison

    发现系统已经安装了jdk并且已经配置了环境变量,但是jdk版本为最新版本,但为什么会提示这个异常呢,最后发现java官网的这个说明:

    具体链接:https://www.java.com/zh_CN/download/faq/yosemite_java.xml

    随后我便装了更低版本的jdk1.6,运行后发现1.6的jdk对https的证书兼容不太好,也就有了后续我忽略https证书的处理;

    1.2创建run.sh脚本

    进入 run.sh放置的问价目录
    cd /Users/xiaozhuzhu/Library/LaunchAgents
    创建run.sh脚本
    vi run.sh

    #!/bin/bash
    echo “tapdTask”
    #PWD=`pwd`
    PWD='/Users/xiaozhuzhu/Library/LaunchAgents'
    echo $PWD
    for i in $PWD/lib/*;
    do
       CLASSPATH=$CLASSPATH:$i
    done
    export CLASSPATH=$CLASSPATH:$PWD/tapd_task.jar
    echo $CLASSPATH
    className='com.huanshou.shopapp.tapd_task.MyClass'
    java -Dfile.encoding=utf-8 -Xmx1024M $className
    #> $PWD/tapdtask.log 2>&1
    

    点击esc退出编辑模式,然后输入:wq保存退出

    注意,脚本要改成可执行的权限
    chmod 777 run.sh

    2 .编写plist文件

    launchctl 将根据plist文件的信息来启动任务。
    plist脚本一般存放在以下目录:

    • /Library/LaunchDaemons -->只要系统启动了,哪怕用户不登陆系统也会被执行

    • /Library/LaunchAgents -->当用户登陆系统后才会被执行

    更多的plist存放目录:

    ~/Library/LaunchAgents 由用户自己定义的任务项
    /Library/LaunchAgents 由管理员为用户定义的任务项
    /Library/LaunchDaemons 由管理员定义的守护进程任务项
    /System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
    /System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

    进入~/Library/LaunchAgents,创建一个plist文件com.demo.plist

    <?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>com.demo.plist</string>
      <!-- 指定要运行的脚本 -->
      <key>ProgramArguments</key>
      <array>
        <string>/Users/xiaozhuzhu/Library/LaunchAgents/run.sh</string>
      </array>
      <!-- 指定要运行的时间 -->
      <key>StartCalendarInterval</key>
      <array>
    		<dict>
    			<key>Hour</key>
    			<integer>15</integer>
    			<key>Minute</key>
    			<integer>30</integer>
    			<key>Weekday</key>
    			<integer>1</integer>
    		</dict>
    		<dict>
    			<key>Hour</key>
    			<integer>15</integer>
    			<key>Minute</key>
    			<integer>30</integer>
    			<key>Weekday</key>
    			<integer>2</integer>
    		</dict>
    		<dict>
    			<key>Hour</key>
    			<integer>15</integer>
    			<key>Minute</key>
    			<integer>30</integer>
    			<key>Weekday</key>
    			<integer>3</integer>
    		</dict>
    		<dict>
    			<key>Hour</key>
    			<integer>15</integer>
    			<key>Minute</key>
    			<integer>30</integer>
    			<key>Weekday</key>
    			<integer>4</integer>
    		</dict>
    		<dict>
    			<key>Hour</key>
    			<integer>15</integer>
    			<key>Minute</key>
    			<integer>30</integer>
    			<key>Weekday</key>
    			<integer>5</integer>
    		</dict>
    	</array>
    <!-- 标准输出文件 -->
    <key>StandardOutPath</key>
    <string>/Users/xiaozhuzhu/Library/LaunchAgents/run.log</string>
    <!-- 标准错误输出文件,错误日志 -->
    <key>StandardErrorPath</key>
    <string>/Users/xiaozhuzhu/Library/LaunchAgents/run.err</string>
    </dict>
    </plist>
    

    2.1 加载命令

    launchctl load -w com.demo.plist
    这样任务就加载成功了。

    更多的命令:

    # 加载任务, -w选项会将plist文件中无效的key覆盖掉,建议加上
    $ launchctl load -w com.demo.plist
    
    # 删除任务
    $ launchctl unload -w com.demo.plist
    
    # 查看任务列表, 使用 grep '任务部分名字' 过滤
    $ launchctl list | grep 'com.demo'
    
    # 开始任务
    $ launchctl start  com.demo.plist
    
    # 结束任务
    $ launchctl stop   com.demo.plist
    

    如果任务呗修改了,那么必须先unload,然后重新load
    start可以测试任务,这个是立即执行,不管时间到了没有
    执行start和unload前,任务必须先load过,否则报错
    stop可以停止任务

    2.3番外篇

    plist支持两种方式配置执行时间:

    StartInterval: 指定脚本每间隔多长时间(单位:秒)执行一次;

    StartCalendarInterval: 可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置,包含下面的 key:

    Minute <integer>
    The minute on which this job will be run.
    Hour <integer>
    The hour on which this job will be run.
    Day <integer>
    The day on which this job will be run.
    Weekday <integer>
    The weekday on which this job will be run (0 and 7 are Sunday).
    Month <integer>
    The month on which this job will be run.

    其中Weekday里0,7表示星期天,1-5分别表示周一到周五;

    plist部分参数说明:

    Label:对应的需要保证全局唯一性;

    Program:要运行的程序;

    ProgramArguments:命令语句

    StartCalendarInterval:运行的时间,单个时间点使用dict,多个时间点使用 array <dict>

    StartInterval:时间间隔,与StartCalendarInterval使用其一,单位为秒

    StandardInPath、StandardOutPath、StandardErrorPath:标准的输入输出错误文件,这里建议不要使用 .log 作为后缀,会打不开里面的信息。

    定时启动任务时,如果涉及到网络,但是电脑处于睡眠状态,是执行不了的,这个时候,可以定时的启动屏幕就好了。

    更多的参数参见:mac官方文档

    3总结:

    由于对mac系统不是很熟悉,导致在调试的时候出各种问题,好在有前人各种采坑,再次谢过给本文提供帮助的大神

    参考文章:

    https://www.jianshu.com/p/4addd9b455f2

    https://blog.csdn.net/u012390519/article/details/74542042

     

    展开全文
  • 相信该问题也困扰了一大部分人,客户购买后觉得不是自己想要的,销售这边也在苦恼,技术也在寻找解决方案。 然而,很高兴的要向大家分享一下,这个问题我们可以解决了,下面我将分享一下我的思路。 思路: 思路一...

    最近以及之前的很长时间里,总会听到询问关于单机版在没有购买控制平台的前提下,能否实现定时启动流程。相信该问题也困扰了一大部分人,客户购买后觉得不是自己想要的,销售这边也在苦恼,技术也在寻找解决方案。

    然而,很高兴的要向大家分享一下,这个问题我们可以解决了,下面我将分享一下我的思路。


    思路:

    1. 思路一:

       通过调用设计器环境中的Python程序去执行该流程中的main.py文件,
       并将该命令写入bat文件。最终通过Windows的计划任务去定时启动这个bat文件。
      
    2. 思路二:

       将该工程以及环境等封装成exe文件,再通过Windows计划任务去定时启动该
       exe文件。(不推荐,目前还没测)
      

    以下针对思路一做一下详细的说明:

    实现步骤:

    1、写bat文件
    "C:/Program Files/IS-RPA2020/Studio-X64/../Python/pythons.exe" 
     "//mac/Home/Desktop/RPA/project/test\codes\Main.py" -i e30=
    

    如果大家在设计器运行流程有注意到的话,上面这一段应该很熟悉。相信看了都应该能明白这一段的意义,然而大家可能没有尝试过的是,将这一段放入Windows系统上的 cmd 后,流程也是同样的运行了。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ji6Cn7S2-1585799248254)(en-resource://database/710:1)]

    如上图所示,当我们输入以上命令,再回车的时候,就发现该该流程已经在正常的运行了。然而我们写的bat文件也是和此有关。bat文件的作用就是将该命令自动输入到 cmd 下。
    在这里插入图片描述
    bat文件中的内容如下:

    注意: 上图红色方框中的路径需改成需要定时启动流程的路径。文件名格式(xxx.bat),建议以该流程的流程名命名。

    当然你会发现,双击这个bat文件,流程也开始运行了。

    2、创建Windows定时任务
    1. 在Windows搜索框中输入“计划任务”(Windows10 下叫 计划任务,其他版本可能名称不一样)。如下图:
      在这里插入图片描述

    2. 打开后,按照以下:(注意一定要点第2步再点第三部,不可跳过)
      在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    思路一已结束,但是不敢肯定一定会很稳定,大家一起测测吧,有问题及时提额

    展开全文
  • 2.构思:楼主是做Android开发的,由于太懂phyon脚本,便想着用java来构建jar包并用shell脚本执行,然后用系统自带的定时任务执行shell脚本小插曲:查阅了资料,发现mac下并没有像Windows那样直接创建定时任务的...

    1.背景:想用定时任务执行某个脚本然后实现定时发送钉钉机器人消息;

    2.构思:楼主是做Android开发的,由于不太懂phyon脚本,便想着用java来构建jar包并用shell脚本执行,然后用系统自带的定时任务执行shell脚本

    小插曲:查阅了资料,发现mac下并没有像Windows那样直接创建定时任务的功能,不过还是有解决方案的,接下里主角launchctl登场,launchctl是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进程和脚本等。

    launchctl是通过配置文件来指定执行周期和任务的。mac下可把任务信息配置在plist上由launchctl读取

    1.shell脚本编写实现

    Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

    Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

    1.1创建tapd_task.jar用来给钉钉群发送机器人定时消息

    具体代码:

    //测试钉钉群

    // public static String WEBHOOK_TOKEN = "https://oapi.dingtalk.com/robot/send?access_token=a9b02dba00b5ad77e6cffbb45c07b95602f7d9d72f5c11370f130787f93ae08a";

    public static String MESSAGE = "{\n" +

    "\t\"msgtype\": \"link\",\n" +

    "\t\"link\": {\n" +

    "\t\t\"text\": \"当天的工作即将结束,请各位同学更新tapd任务花费及状态等信息(点击此妹纸可直达tapd任务链接 Y(^_^)Y \",\n" +

    "\t\t\"title\": \"更新tapd任务提示\",\n" +

    "\t\t\"picUrl\": \"https://ws1.sinaimg.cn/large/0065oQSqly1g0ajj4h6ndj30sg11xdmj.jpg\",\n" +

    "\t\t\"messageUrl\": \"https://www.tapd.cn/",\n" +

    "\t\t\"at\": {\n" +

    "\t\t\t\"atMobiles\": [\n" +

    "\t\t\t\t\"156xxxx8827\",\n" +

    "\t\t\t\t\"189xxxx8325\"\n" +

    "\t\t\t],\n" +

    "\t\t\t\"isAtAll\": true\n" +

    "\t\t}\n" +

    "\t}\n" +

    "}";

    public static String MESSAGE2 = "{\n" +

    "\t\"msgtype\": \"text\",\n" +

    "\t\"text\": {\n" +

    "\t\t\"content\": \"请各位同学及时处理!!!\"\n" +

    "\t},\n" +

    "\t\"at\": {\n" +

    "\t\t\"atMobiles\": [\n" +

    "\t\t\t\"156xxxx8827\",\n" +

    "\t\t\t\"189xxxx8325\"\n" +

    "\t\t],\n" +

    "\t\t\"isAtAll\": true\n" +

    "\t}\n" +

    "}";

    public static void main(String args[]) throws Exception {

    // HttpClient httpclient = HttpClients.createDefault();

    HttpClient httpclient = createSSLClientDefault();

    HttpPost httppost = new HttpPost(WEBHOOK_TOKEN);

    httppost.addHeader("Content-Type", "application/json; charset=utf-8");

    StringEntity se = new StringEntity(MESSAGE, "utf-8");

    httppost.setEntity(se);

    HttpResponse response = httpclient.execute(httppost);

    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

    String result = EntityUtils.toString(response.getEntity(), "utf-8");

    System.out.println(result);

    }

    HttpClient httpclient2 = HttpClients.createDefault();

    HttpPost httppost2 = new HttpPost(WEBHOOK_TOKEN);

    httppost2.addHeader("Content-Type", "application/json; charset=utf-8");

    StringEntity se2 = new StringEntity(MESSAGE2, "utf-8");

    httppost2.setEntity(se2);

    httpclient2.execute(httppost2);

    }

    /**

    * 忽略https证书,1.6的jdk在mac环境下用命令行运行jar包对https的证书兼容有问题

    *

    * @return

    */

    public static CloseableHttpClient createSSLClientDefault() {

    try {

    SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {

    // 信任所有

    public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {

    return true;

    }

    }).build();

    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);

    return HttpClients.custom().setSSLSocketFactory(sslsf).build();

    } catch (KeyManagementException e) {

    e.printStackTrace();

    } catch (NoSuchAlgorithmException e) {

    e.printStackTrace();

    } catch (KeyStoreException e) {

    e.printStackTrace();

    }

    return HttpClients.createDefault();

    }

    生成jar包的gradle配置:

    apply plugin: 'java-library'

    dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    }

    task deleteOldJar(type: Delete) {

    delete 'build/outputs/test.jar'//架包输出路径

    }

    task exportJar(type: Copy) {

    from('build/intermediates/intermediate-jars/release/')//3.0之前的版本是(build/intermediates/bundles/release/)之后发生了变化

    into('build/libs/')//输出路径,自定义

    include('classes.jar')

    rename ('classes.jar', 'tapd_task.jar')//后面的是jar包名,自定义

    }

    exportJar.dependsOn(deleteOldJar, build)

    sourceCompatibility = "6"

    targetCompatibility = "6"

    在Android studio terminal里执行gradle exportJar即可在对应的文件夹里生成shell脚本执行的jar包

    这里的值得一说的就是这个配置

    sourceCompatibility =6

    原先配置里面是

    sourceCompatibility =7

    但是在后面执行tapd.plist时发现系统提示“您需要安装JDK才能使用java命令工具”,之后我在终端里打印

    java -verison

    发现系统已经安装了jdk并且已经配置了环境变量,但是jdk版本为最新版本,但为什么会提示这个异常呢,最后发现java官网的这个说明:

    c805f37ee8e0cecb2af6f0e596081245.png

    具体链接:https://www.java.com/zh_CN/download/faq/yosemite_java.xml

    随后我便装了更低版本的jdk1.6,运行后发现1.6的jdk对https的证书兼容不太好,也就有了后续我忽略https证书的处理;

    1.2创建run.sh脚本

    进入 run.sh放置的问价目录

    cd /Users/xiaozhuzhu/Library/LaunchAgents

    创建run.sh脚本

    vi run.sh

    #!/bin/bash

    echo “tapdTask”

    #PWD=`pwd`

    PWD='/Users/xiaozhuzhu/Library/LaunchAgents'

    echo $PWD

    for i in $PWD/lib/*;

    do

    CLASSPATH=$CLASSPATH:$i

    done

    export CLASSPATH=$CLASSPATH:$PWD/tapd_task.jar

    echo $CLASSPATH

    className='com.huanshou.shopapp.tapd_task.MyClass'

    java -Dfile.encoding=utf-8 -Xmx1024M $className

    #> $PWD/tapdtask.log 2>&1

    点击esc退出编辑模式,然后输入:wq保存退出

    注意,脚本要改成可执行的权限

    chmod 777 run.sh

    2.编写plist文件

    launchctl 将根据plist文件的信息来启动任务。

    plist脚本一般存放在以下目录:

    /Library/LaunchDaemons -->只要系统启动了,哪怕用户不登陆系统也会被执行

    /Library/LaunchAgents -->当用户登陆系统后才会被执行

    更多的plist存放目录:

    ~/Library/LaunchAgents 由用户自己定义的任务项

    /Library/LaunchAgents 由管理员为用户定义的任务项

    /Library/LaunchDaemons 由管理员定义的守护进程任务项

    /System/Library/LaunchAgents 由Mac OS X为用户定义的任务项

    /System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

    进入~/Library/LaunchAgents,创建一个plist文件com.demo.plist

    Label

    com.demo.plist

    ProgramArguments

    /Users/xiaozhuzhu/Library/LaunchAgents/run.sh

    StartCalendarInterval

    Hour

    15

    Minute

    30

    Weekday

    1

    Hour

    15

    Minute

    30

    Weekday

    2

    Hour

    15

    Minute

    30

    Weekday

    3

    Hour

    15

    Minute

    30

    Weekday

    4

    Hour

    15

    Minute

    30

    Weekday

    5

    StandardOutPath

    /Users/xiaozhuzhu/Library/LaunchAgents/run.log

    StandardErrorPath

    /Users/xiaozhuzhu/Library/LaunchAgents/run.err

    2.1 加载命令

    launchctl load -w com.demo.plist

    这样任务就加载成功了。

    更多的命令:

    # 加载任务, -w选项会将plist文件中无效的key覆盖掉,建议加上

    $ launchctl load -w com.demo.plist

    # 删除任务

    $ launchctl unload -w com.demo.plist

    # 查看任务列表, 使用 grep '任务部分名字' 过滤

    $ launchctl list | grep 'com.demo'

    # 开始任务

    $ launchctl start com.demo.plist

    # 结束任务

    $ launchctl stop com.demo.plist

    如果任务呗修改了,那么必须先unload,然后重新load

    start可以测试任务,这个是立即执行,不管时间到了没有

    执行start和unload前,任务必须先load过,否则报错

    stop可以停止任务

    2.3番外篇

    plist支持两种方式配置执行时间:

    StartInterval: 指定脚本每间隔多长时间(单位:秒)执行一次;

    StartCalendarInterval: 可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置,包含下面的 key:

    Minute The minute on which this job will be run.

    Hour The hour on which this job will be run.

    Day The day on which this job will be run.

    Weekday The weekday on which this job will be run (0 and 7 are Sunday).

    Month The month on which this job will be run.

    其中Weekday里0,7表示星期天,1-5分别表示周一到周五;

    plist部分参数说明:

    Label:对应的需要保证全局唯一性;

    Program:要运行的程序;

    ProgramArguments:命令语句

    StartCalendarInterval:运行的时间,单个时间点使用dict,多个时间点使用 array

    StartInterval:时间间隔,与StartCalendarInterval使用其一,单位为秒

    StandardInPath、StandardOutPath、StandardErrorPath:标准的输入输出错误文件,这里建议不要使用 .log 作为后缀,会打不开里面的信息。

    定时启动任务时,如果涉及到网络,但是电脑处于睡眠状态,是执行不了的,这个时候,可以定时的启动屏幕就好了。

    更多的参数参见:mac官方文档

    3总结:

    由于对mac系统不是很熟悉,导致在调试的时候出各种问题,好在有前人各种采坑,再次谢过给本文提供帮助的大神

    参考文章:

    https://www.jianshu.com/p/4addd9b455f2

    https://blog.csdn.net/u012390519/article/details/74542042

    展开全文
  • 最近有个需求,需要做成windows Service...最后的解决方案是用posershell 写三四行代码,一执行,就可以将定时任务添加成功 首先,就是写好一个net core控制台程序。控制台程序运行你的处理逻辑。 代码就...

    最近有个需求,需要做成windows Service服务来定时执行,用net core写完了,才发现没法子做为服务来运行。

    在园子里搜了下,有各种解决方法,各有千秋。看了后,觉得不太方便,就自己想想法子来处理了。最后的解决方案是用posershell 写三四行代码,一执行,就可以将定时任务添加成功

     

    首先,就是写好一个net core控制台程序。控制台程序运行你的处理逻辑。

    代码就不展示了……

    然后将代码发布到指宝的文件夹,需要记录下你控制台的dll名字。对,dll名字,net core控制台程序,默认不会创建exe文件。

    复制好发布好的文件夹路径,

    可以用任意的编辑器编写以下代码,我是用系统自带的Powershell ISE来编写的。

    Register-ScheduledJob -Name XXXXService -ScriptBlock{
    dotnet Path\XXXXService.dll
    } -Trigger (New-JobTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval '01:00:00' -RepeatIndefinitely)

     

     

    代码做个说明,

    在系统中注册一个计划任务 (Register-ScheduledJob) ,指定计划名(-Name),指定要运行的脚本(-ScriptBlock ),脚本内容(dotnet  path),

    指定触发器(-Trigger ),新建触发器 指定运行开始时间,指定运行间隔时间(-RepetitionInterval ),代表一小时运行一次(01:00:00),指定无限期运行 (-RepeatIndefinitely)

    只需要运行上面的Powershell脚本,即可为系统添加一个定时执行的计划任务。

     

    足够简单方便。

     

    Unregister-ScheduledJob -Name XXXXService     ---删除计划任务。

     

    转载于:https://www.cnblogs.com/fong/p/10029348.html

    展开全文
  • php做到每天定时执行,只有java或者c可以,因为php是访问页面就不会动得代码,但是有一个方法可以曲线救国 你写一个页面是你要每天定时执行的页面,然后视你的...以下我只贴出linux的解决方案,因为一般服务...
  • php如何每天定时执行

    2019-10-03 03:37:49
    php做到每天定时执行,只有java或者c可以,因为php是访问页面就不会动得代码,但是有一个方法可以曲线救国 你写一个页面是你要每天定时执行的页面,然后视你的操作系统而言...以下我只贴出linux的解决方案,因...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程,采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是不错的解决方案。但是,以上这些都需要有服务器的权限才能...
  • 二、解决方案  PHP本身是不支持定时发送的,因为PHP是一个脚本语言。在大多数情况下,浏览器关闭,PHP也就不执行了。大部分情况下都依赖于外部的一些小东西。  1、固定时间  大多数服务器系统都是windows或linux...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • 来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于 Web应用程序来说,这些方法实现起来并不是很简单的,主机服务提供商或者能...
  • 实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • asp.net计划任务

    2010-06-15 14:07:00
    实现计划任务的方法也有很多,可以采用SQLAgent执行存储过程来实现,也可以采用Windows任务调度程序来实现,也可以使用 Windows服务来完成我们的计划任务,这些方法都是很好的解决方案。但是,对于Web应用程序来说,...
  • LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用,同时也希望开源爱好者一起贡献。 ---> 底部有招人帖 ...
  • · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...
  • · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...
  • · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...
  • · 使用线程池、任务、取消、计时器和异步I/O操作来设计响应性强、稳定性高和伸缩性大的解决方案 · 借助于异常处理来进行状态管理 · 使用CLR寄宿、AppDomain、程序集加载、反射和C#的dynamic类型来构造具有动态...
  • fourinone-3.04.25

    2013-12-11 21:35:04
    Fourinone对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。Fourinone有“包工头”,“农民工”,“手工仓库”的几...
  •  Fourinone对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。Fourinone有“包工头”,“农民工”,“手工仓库”的...
  • 也可配合Windows计划任务或者使用linux定时任务,将脚本挂在自己的云服务器上,不会就搜索一下,过程不再赘述 第二种情况,云端系统可用(被禁用),这种情况就只能使用通用脚本了,同样可以挂在腾讯云函数,...
  • SSO-WebDemo

    2013-08-12 20:25:57
    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的业务...
  • 每个实例都是作者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。  《C#开发实战1200例(第2卷)》附带有配套dvd光盘,光盘中提供有书中全部实例的源代码,这些源代码都是经过作者精心...
  • 每个实例都是作者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。  本书非常适合C#项目开发人员、C#初学者及编程爱好者使用,同时也可作为培训机构、大中专院校老师和学生的实践参考...
  • Python Cookbook

    2013-07-31 22:33:26
    3.11 定时执行命令 127 3.12 十进制数学计算 129 3.13 将十进制数用于货币处理 130 3.14 用Python实现的简单加法器 133 3.15 检查信用卡校验和 136 3.16 查看汇率 137 第4章 Python技巧 139 引言 139 4.1 ...
  • 每个实例都是作者精心筛选的,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。  本书非常适合C#项目开发人员、C#初学者及编程爱好者使用,同时也可作为培训机构、大中专院校老师和学生的实践参考...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

windows定时任务不执行解决方案