how can I run a java program automaticlly - job-scheduling

I have a java package,
I want to my program be runned every night at 0 o'clock automaticlly,
how can I do this work?

Generally you have 2 solutions:
Create application that runs your code every night, i.e. implement scheduling yourself. Obviously you can (and should) use tools that help you to do scheduling.
Use OS-specific tools. For example cron for unix and windows task scheduler for windows.

You can either schedule in your own OS. On *nix, there is cron. I'm not sure what is used in windows.
Or you can make your own java program schedule: on running it, it sets a times to execute your task in a specific time.
You could use a Thread.sleep() counting the time from now until midnight, but that's a poor-man's solution. Quartz is your man, as it works schedulling your tasks.
If you choose the schedulling path, you can't forget to run your application in the OS startup

Related

Scheduling Cucumber test features to run repeatedly

I have a Cucumber test (feature files) in the RubyMine IDE and lately I have a need to execute one of the feature repeatedly on a scheduled time.
I haven't found a way to do so. Any idea or thoughts on scheduling that feature file?
You can create a cron job which will execute a rake.
The software utility Cron is a time-based job scheduler in Unix-like
computer operating systems. People who set up and maintain software
environments use cron to schedule jobs (commands or shell scripts) to
run periodically at fixed times, dates, or intervals.
These links might help
How to create a cron job using Bash
how to create a cron job to run a ruby script?
http://rake.rubyforge.org/
I solved the problem by simply installing Jenkins on my machine from its official site,https://jenkins-ci.org/. I configured master and slave nodes on my own machine because I just needed to run one feature file(it has the script I want to run on daily basis).
Although, it is recommended to configure slave on a different machine if we have multiple jobs to run and our jobs are resource intensive.
There is a very good illustration on installing, configuring and running jobs in this link http://yakiloo.com/setup-jenkins-and-windows/

Run console application automatically in windows

Is it possible to automatically run a console application on a particular time in a day.
With out set up any sheduler !
Not without any scheduler; something needs to invoke it.
Alternatively, you can write a separate app that runs on startup and starts your app for you at the desired time. This would mean that this background app would always be open.
Using the scheduler would be much easier.
If with "set up any scheduler" you refer to not installing something to do the schedule, there is no need to do that. Windows include it own scheduler.

Turning on a specific program at a specific time and turning off the computer at another specific time

I decided to write a program in RUBY in which the following things should be done:
1 - this program must run a specific program (for example utorrent) at a specific time (for example 1 pm).
2 - this program must turn off my computer at another specific time.
I don't have any idea about the algorithm and manner of writing such program.
One of the easiest ways to do this is to simply send kill signals to the processes, requesting the app shut down normally (Linux), or in Windows use taskkill.
To shutdown a machine in Windows, you can use shutdown /s /f which forcibly closes any programs that are running, and turns the computer off.
No matter which way you do it, you'll basically be running the enter link description heresystem() command in Ruby, which runs command line commands. To make your app portable, you simply look up how to do these tasks in each target OS, and you're done.
Two more alternatives that work the same as your Ruby proposal, but which are not as easily portable:
Write a batch file in Windows that calls taskkill, or a bash script on Linux. Unless the program in question provides a specific way to shut it down via its own command-line parameters, this should work for any/all applications.
You can also use Task Scheduler in Windows, or cron in Linux to do the same thing.

Where to place a shell script?

Hello fellow computer people :)
I have a shell script that I will use as a watchdog timer. It checks to see if my other 'main' program is running. If it is not, it restarts it.
The question is: How do I get this installed on a Mac? Is there a folder/plist file scenario somewhere where the OS will automatically and periodically call the script, ensuring that my program never goes that long without running? I would ideally like to test every minute, but every hour or even a couple of times a day would be satisfactory.
Thank you!
The way to do this on Mac OS X is using Launch Services. It replaces the older system services such as init and crontab and provides a single, unified framework for managing system services.
In your case, you probably don't need a separate script - keeping an instance of your app running should be handled by the system. First you need to create .plist file that describes your daemon/script/application. You place it in one of the following locations, depending on the type of service:
~/Library/LaunchAgents: Per-user agents provided by the user.
/Library/LaunchAgents: Per-user agents provided by the administrator.
/Library/LaunchDaemons: System wide daemons provided by the administrator.
/System/Library/LaunchAgents: Mac OS X Per-user agents.
/System/Library/LaunchDaemons: Mac OS X System wide daemons.
Once you have defined the service, you can use the launchctl command to control launchd. For example, you can list running services, start/stop services, and so on.
The full documentation is here:
Creating launchd Daemons and Agents
Daemons vs Agents
I'm not a Mac user but there should be cron daemon. http://hints.macworld.com/article.php?story=2001020700163714
Crontab should do you nicely. Set your script to run every X minutes and cron will do the rest. If you prefer a GUI interface to your programs, try cronnix.

Cron-like system for Windows?

I'm looking for an equivalent to a Cron system for Windows. The idea is to able to schedule a trigger and monitor whether it has run successfully or not.
What the system need to do is the following:
It should be able to trigger Win32 COM objects and/or executables.
It should be able to trigger .NET COM objects and/or .NET executables.
It should be able to trigger scripts written in any language, either based on native framework (Python, Perl, Ruby) or based on the DLR (IronPython, Ruby.NET, whatever)
The scripts should range between simple scripts that take a few seconds to fairly heavy ones that can take up to half an hour.
The monitoring aspect is critical. So basically I'm looking for the following:
If the script or executable fails then an e-mail should be sent or some other notification mechanism.
Every trigger should be logged so that we can look back and see when the code has failed.
The failure should easily be traced either through some sort of debug output or stack trace.
Are there any Windows developers out there who have created such a system? I know in the UNIX world there is Cron but what about in the Windows world?
At command prompt type 'at'
> at /?
The AT command schedules commands and programs to run on a computer at
a specified time and date. The Schedule service must be running to use
the AT command.
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername Specifies a remote computer. Commands are scheduled on the
local computer if this parameter is omitted.
id Is an identification number assigned to a scheduled
command.
/delete Cancels a scheduled command. If id is omitted, all the
scheduled commands on the computer are canceled.
/yes Used with cancel all jobs command when no further
confirmation is desired.
time Specifies the time when command is to run.
/interactive Allows the job to interact with the desktop of the user
who is logged on at the time the job runs.
/every:date[,...] Runs the command on each specified day(s) of the week or
month. If date is omitted, the current day of the month
is assumed.
/next:date[,...] Runs the specified command on the next occurrence of the
day (for example, next Thursday). If date is omitted, the
current day of the month is assumed.
"command" Is the Windows NT command, or batch program to be run.
You should be able to use the scheduled task for all the above.
I would suggest looking at revised Task Scheduler 2.0 in Vista/Server 2008. It is much more powerful than 1.0 in previous versions of Windows, now able to
Event based triggers, e.g. every time an Application event code 1053 is caused
Triggers on failed tasks (the biggest addition for me)
More built in actions, such as sending emails instead of calling blat.exe
Looking over your list, I believe that everything you are looking for is already there.
Have you looked at Windows Scheduler? It seems to meet most, if not all, of your requirements, and is already included in the OS. You can find it documented at MSDN
If you want a script to "trigger Win32 COM objects and/or executables", "trigger .NET COM objects and/or .NET executables", log failures and notify of failures by email, that sounds to me like a job for PowerShell.
PowerShell doesn't have logging and emailing done for you, rather it's a programming language where you can log or send email (or whatever) fairly easily.
I have scheduled PowerShell scripts to run using the "at" / "Task Scheduler" service, with success. It's a good combination.
Take a look at nnCron. I'm using a Lite version. It has a unix crontab syntax. There is a log file but as for more advanced monitoring aspects, it's up to your script/application to provide details, eg. return Result code (that will be logged). nnCron Lite was the best cron clone for windows (free, no perl requirement, crontab, missed tasks, run as hidden window, set enviroment variable - useful for postgres "dump all" tool, etc.) that I found.
Have a look here: Cron for Windows. There also was some Cron-like software ported for (Free)DOS that should work on Windows, but I can't remember the name.
Have you tried JIT-Scheduler in combination with PowerShell?
http://shareme.com/download/jit-scheduler.html

Resources