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

  • 相关阅读:
    webpack.DefinePlugin
    webpack-dev-server配置指南(使用webpack3.0)
    Eclipse配色方案插件
    解决Sublime Text 3中文显示乱码问题(转)
    Java连接SqlServer2008数据库
    [转]java中判断字符串是否为数字的三种方法
    VS2008 SP1 安装卡在 VS90sp1-KB945140-X86-CHS的解决方法
    Python获取桌面路径
    关于fdisk命令
    socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
  • 原文地址:https://www.cnblogs.com/awpatp/p/1669539.html
Copyright © 2011-2022 走看看