zoukankan      html  css  js  c++  java
  • 强制执行MOSS的Timer Jobs

    简介

    ==========

    MOSS在一定数量上的功能领域是非常依赖timer jobs的. Timer Jobs在一个固定的时间周期上运行, 然而不论如何, 它们总要在一个被赋予的schedule上执行. 如果你想要让某个特别的timer job按照你的想法来运行, 怎么办呢? 这篇文章会告诉你答案.

    更换Timer Jobs的Schedule

    ==========

    如果你想要强制执行一个MOSS的timer job, 很不幸, 你不能这样做. 因为每一个timer job都有一个固定的schedule.

    有三种类型的schedule:

    • Minutes
    • Hourly
    • Daily

    尽管你不能强制执行一个timer job, 你却毫无疑问地可以修改一个timer job的执行时间计划, 它能帮助你完成强制执行一个timer job的愿望. 比如说, Usage Analysis job是一个daily job. 它每天只执行一次. 如果说, 你想要这个job立即执行的话, 你可以把它从"Daily"修改为"Minutes".

    所有内建的MOSS timer job都可以使用stsadm命令行的setproperty命令来修改. 要把usage analysis job从每24小时执行一次, 变为每5分钟执行一次, 你可以使用下面的命令:

    stsadm -o setproperty -pn job-usage-analysis -pv "Every 5 minutes"

     

    所有其他的内建的timer jobs的名字列在下面:

    • job-change-log-expiration
    • job-dead-site-delete
    • job-diskquota-warning
    • job-immediate-alerts
    • job-recycle-bin-cleanup
    • job-usage-analysis
    • job-workflow
    • job-workflow-autoclean
    • job-workflow-failover

    不同频率的格式列表

    Job frequency

    Example time format

    Immediate

    "every 5 minutes between 0 and 59"

    Daily

    "daily between 22:00:00 and 06:00:00"

    "daily between 0:00:00 and 01:00:00"

    Weekly

    "weekly between Fri 22:00:00 and Mon 06:00:00"

    "weekly at Sat 0:00:00"

    如果你有一个自定义的timer job的definition, 并且你还想修改它的schedule, 唯一我能想到的方法就是使用Object Model. 因为没有stsadm命令可以帮助你修改自定义的job. 下面就是一个代码例子, 它展示了如何修改一个custom job的schedule, 使它变为按分钟计算的那种schedule:

    using (SPSite site = new SPSite("http://servername"))
    { 
        using(SPWeb web = site.OpenWeb())
        {
            SPFarm farm = site.WebApplication.Farm;
            SPWebApplication webApp = site.WebApplication;
            foreach (SPJobDefinition jobDef in webApp.JobDefinitions)
            {
                // if (jobDef.WebApplication == siteCollection.WebApplication)
                // Console.WriteLine(jobDef.Title);
                if (jobDef.Title == "Usage Analysis")
                {
                    jobDef.Schedule = new SPMinuteSchedule(); 
                    jobDef.Update(); 
                    break;
                }
            }
        }

    结论

    ===========

    如果你想要执行一个很久之后才会再次执行的MOSS的timer job的时候, 你可以通过修改这个job的schedule来做到. 如果job是内建的, 那么你可以通过stsadm来修改. 如果job是一个自定义的, 那么唯一可行的方法就是通过MOSS的SDK.

    运行下面的命令来立即执行administrative timer jobs

    stsadm -o execadmsvcjobs

    译自:

    Forcing Execution of MOSS Timer Jobs

    http://blogs.msdn.com/tehnoonr/archive/2009/02/15/forcing-execution-of-moss-timer-jobs.aspx

  • 相关阅读:
    CF1051F The Shortest Statement 题解
    CF819B Mister B and PR Shifts 题解
    HDU3686 Traffic Real Time Query System 题解
    HDU 5969 最大的位或 题解
    P3295 萌萌哒 题解
    BZOJ1854 连续攻击游戏 题解
    使用Python编写的对拍程序
    CF796C Bank Hacking 题解
    BZOJ2200 道路与航线 题解
    USACO07NOV Cow Relays G 题解
  • 原文地址:https://www.cnblogs.com/awpatp/p/1669539.html
Copyright © 2011-2022 走看看