我创建了一个简单的Windows窗体应用程序,它显示了计算机上所有计划任务的名称和文件夹.我正在使用Task Scheduler Managed Wrapper(Microsoft.Win32.TaskScheduler),下面是获取名称并显示它们的代码.然而,似乎AllTasks实际上并没有给我所有的任务.有一些没有显示.在这种情况下,什么可能导致任务被隐藏?
using (TaskService tsksrvs = new TaskService())
{
foreach (Task tsk in tsksrvs.AllTasks)
{
textJobsList.Text += tsk.Name + " (" + tsk.Folder + ")" + Environment.NewLine;
}
}
Run Code Online (Sandbox Code Playgroud) 我运行的任何火花作业都将失败并显示以下错误消息
17/06/16 11:10:43 WARN cluster.YarnScheduler:初始作业没有接受任何资源;检查您的集群 UI 以确保工作人员已注册并拥有足够的资源
Spark 版本是 1.6,在 Yarn 上运行。
我正在从 pyspark 发布工作。
您可以从作业时间表中注意到它无限期地运行并且没有添加或删除资源。1
我已经配置了两个不同的线程池,一个用于@Scheduled和另一个用于@Async.但是,我注意到@Async没有使用线程池.
这是Scheduler配置
@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {
private final int POOL_SIZE = 10;
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(POOL_SIZE);
threadPoolTaskScheduler.setThreadNamePrefix("my-sched-pool-");
threadPoolTaskScheduler.initialize();
scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
}
}
Run Code Online (Sandbox Code Playgroud)
这是Async的配置
@Configuration
@EnableAsync
public class AppConfig {
@Bean(name = "asyncTaskExecutor")
public TaskExecutor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(15);
executor.setMaxPoolSize(15);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("my-async-pool-");
executor.initialize();
return executor;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我如何调用它们
@Scheduled(fixedRateString = "2000" )
public void schedule() {
log.debug("here is the message …Run Code Online (Sandbox Code Playgroud) threadpoolexecutor spring-scheduled spring-boot taskscheduler spring-async
我有一项任务,每天每5分钟触发一次。但是最近,我发现任务总是在上午8:00到9:00之间失败,但是所有其他任务(每1分钟触发一次)都没有问题。所以我不知道怎么了。
从下面的日志中,我可以看到在8:20有一个触发器,它最终在8:30终止了。实际上,该任务非常简单,只需不到1分钟即可完成。所以我不知道为什么会有“启动请求被忽略,实例已经在运行”的警告。
我想每 30 分钟从我的本地 comp 运行一个脚本。大多数时候我都远离办公桌。我不想整天开着我的电脑。有什么方法可以做到这一点。
目前我有以下代码。当我的计算机运行时,代码运行良好。
library(taskscheduleR)
taskscheduler_create("docu",
"C:/Users/jorda/OneDrive/Documents/first.R",
"MINUTE", "23:15", modifier = 30, startdate = "2019/06/05")
Run Code Online (Sandbox Code Playgroud)
注意*我使用的是 Windows 10。
理想的解决方案是让计算机醒来运行代码,然后返回睡眠状态。
我正在使用此视频作为指导https://www.youtube.com/watch?v=UDKy5_SQy2o&t=213s
我有一个名为 task 的文件夹,它目前包含 2 个孩子:firstschedule.R 和 task1.bat。我的 .bat 文件是:
@echo off
R CMD BATCH #path to my file
Run Code Online (Sandbox Code Playgroud)
当我尝试打开文件时,会弹出一个显示 - 以管理员或其他用户身份运行。单击以管理员身份运行后,我收到另一个弹出窗口,询问我 Windows 是否可以对我的计算机进行更改。点击允许后。没发生什么事。我期待输出日志与所有输出一起弹出。我的 R 脚本很简单
x=10
y = x + 5
print(y)
Run Code Online (Sandbox Code Playgroud)
这是一个类似的更新教程。https://www.r-bloggers.com/how-to-run-r-from-the-task-scheduler/看来我很难找到这个 Rscript 文件。它是否在旧版本的 R 中使用但不适用于当前的 3.6.0?
下午好!最近我创建了一个Window Server 2016 Datacenter.我的任务之一是按计划(每5分钟)运行我自己的应用程序.为了测试"任务调度程序"是否正常工作,尝试启动计算器并设置触发器.
问题是当完成所有设置时,调度程序会在下次运行计算器时写入,但是到时候没有任何反应.但是,在刷新调度程序后写入它已成功启动,但实际上并非如此.此外,如果我手动运行,计算器会打开. 这就是调度程序显示的内容,但事实上它并没有发生
如果有必要,我可以提供任何其他细节.提前致谢!
scheduled-tasks windows-server windows-server-2016 taskscheduler
我正在尝试使用 c# 任务计划程序托管包装器以编程方式在 Windows 系统上生成计划任务。我可以生成任务,但只能在帐户登录时才能运行它:
我一直在环顾四周,发现了去年提出的另一个问题,但要么还有其他未提及的相关设置,要么代码库中的某些内容从那时起发生了变化:
如何在 C# 中使用 TaskScheduler 设置“仅在登录时运行”和“运行方式”?
我认为这种方法可能是正确的,但是当我尝试它时,我收到一条令人困惑的错误消息:
任务计划程序 2.0 (1.2) 不支持设置此属性。您必须使用 InteractiveToken 才能在当前用户会话中运行任务。
我使用的代码如下:
public static void ScheduleTask(string machineName, string taskName, string taskAccount, string password)
{
using (TaskService ts = new TaskService(machineName))
{
TaskDefinition td = ts.NewTask();
td.Principal.RunLevel = TaskRunLevel.Highest;
td.Principal.UserId = WindowsIdentity.GetCurrent().Name;
td.Principal.LogonType = TaskLogonType.InteractiveToken;
td.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;
td.Settings.DisallowStartIfOnBatteries = false;
td.Settings.StopIfGoingOnBatteries = false;
td.Settings.StartWhenAvailable = true;
//td.Settings.RunOnlyIfLoggedOn = true;
td.Settings.Enabled = true;
td.Settings.Hidden = false;
td.Settings.AllowHardTerminate = true;
td.Settings.ExecutionTimeLimit = new TimeSpan();
var …Run Code Online (Sandbox Code Playgroud) 我正在使用 C# 任务计划程序库来管理任务:https : //github.com/dahall/TaskScheduler
在给定的任务中,我可以设置“已启用”布尔值并保留更改:
task.Enabled= true;
task.State.Dump();
task.RegisterChanges();
Run Code Online (Sandbox Code Playgroud)
但是对 RegisterChanges() 的调用不会导致更改。我错过了什么吗?是否有其他方法可以使用此库禁用任务?
我正在运行C#Windows控制台应用程序,并通过Task Scheduler传递了几个参数。它全天运行,将其他应用程序创建的平面文件数据加载到SQL Server中。该程序间歇性地失败,并且我具有Try / Catch逻辑,该逻辑使用Console.WriteLine()写入有关异常的信息。
因此,基本上我需要跟踪控制台输出的位置,以便可以采取措施消除间歇性故障。我在网上浏览了很多,认为这是诊断Task Scheduler计划的应用程序中的错误的相当普遍的要求。我的在线搜索显示了一些解决方案,但是当直接通过Task Scheduler运行ac#控制台应用程序时,关于控制台输出的位置没有直接答案。
我看到的两个解决方法是:
(1)获取任务计划程序以运行Windows批处理脚本(.bat文件),而不是直接运行控制台应用程序(.exe文件)。在批处理脚本中,使用“>”或“ >>”将控制台输出重定向到平面文件(例如C:\ app \ myapp.exe arg1 arg2>“ C:\ log \ myapp_console_output.txt”)
(2)一个非常相似的解决方案是让Task Scheduler使用/ C选项运行Windows命令行cmd.exe,并将参数传递到cmd.exe中以运行我的控制台应用程序,并重定向控制台输出。例如:cmd.exe / C“ C:\ app \ myapp.exe” arg1 arg2>“ C:\ log \ myapp_console_output.txt”
尽管我承认上述变通办法很可能会帮助我捕获将来的故障,但并不能真正帮助我跟踪已发生的间歇性故障的输出。它们似乎也很杂乱,无法实现我认为是非常常见的标准要求。
任何人都可以确认直接通过Task Scheduler运行ac#控制台应用程序时,控制台输出肯定不会保留在某处吗?
我有一个 powershell 脚本,它会触发一封电子邮件,我已将其另存为EmailScript.PS1(该脚本没有问题,它运行得很好)。我计划每当登录事件时安排此脚本,例如:
Event ID:111 Description:Task terminated
Run Code Online (Sandbox Code Playgroud)
每当触发所需事件时,我就能够成功地安排此脚本。
但是,目前它考虑了xyz任务计划程序中运行的所有任务(例如,不是我命名的目标任务)。
我想仅在特定任务(不是所有任务)触发事件时安排此基于事件的任务,但在任务计划程序创建任务选项卡中找不到这样的过滤器/下拉列表。
任何建议/帮助将不胜感激。
taskscheduler ×10
c# ×4
windows ×2
.net ×1
apache-spark ×1
command-line ×1
hadoop-yarn ×1
powershell ×1
pyspark ×1
r ×1
spring-async ×1
spring-boot ×1
windows-10 ×1