The present invention relates generally to scheduling tasks for execution on a plurality of computers in a wide area network and, more particularly, to remote scheduling of tasks for execution on servers and workstations in the network.
In a large enterprise with many thousands of file servers and workstations, the conventional methods of running maintenance software on remote computers in a wide area network have proven to be very inefficient. Every Windows-based machine has a built in tool called the task scheduler. Scheduled tasks are created and executed based on standard security permissions. The task scheduler is fully integrated into the operating system. The task scheduler is useful for scheduling a task to run at a certain time on a machine in a Windows-based computing environment when the machine is not being utilized or when it doesn't interfere with production. However, this approach only works if the administrator can get to the server or workstation to configure the task.
There is a need for a method for remotely placing tasks (jobs) in the task schedulers of multiple workstations in the network simultaneously. The task scheduler on each server or workstation then runs the actual job at the assigned time or when a certain event occurs.
The present invention is directed to a job scheduler that not only can perform all of the customized configurations of the task scheduler on an operating system platform, but can do so for thousands of machines at a time. The job scheduler can read every machine on a selected domain or just certain types of machines and allow the user to set a scheduled task on as many machines as the user selects, or on all of the machines in the network that are not excluded. A domain is a single security boundary of a Windows-based computer network. Every domain has its own security policies and security relationships with other domains in the Active Directory. The present invention allows the user to configure a job to run at a certain time and then export the configuration to the task scheduler of as many machines as the user selects from the automatically generated list. This list is pulled from the Active Directory of the network domain selected. It can also be configured to only show specific types of machines such as print server, mail servers, domain controllers, file servers, infrastructure servers, or application servers. It can also be configured to only show only Windows 2000 or 2003 servers. The job scheduler of the invention can be configured to run the jobs either using a special network ID or using the system account.
In one aspect of the invention, a method is provided for remote scheduling of at least one job to run on a plurality of computers in a computer network. The method begins by selecting a domain that includes at least a subset of the computers on which the job is to run. A list of computers in the selected domain is automatically generated. The computers on which the job is to run are selected from the generated list of computers. A configuration file is created for storing an identification of the selected domain and the job to be run on the selected computers. Next, a determination is made whether or not the job already exists in a task scheduler on each of the selected computers. If the job already exists on any selected computer, it is removed from the task scheduler on that computer. The configuration file identifying the selected domain and job to be run is transmitted to the task scheduler of each selected computer in the domain.
In another aspect of the invention, a computer program product is provided for remote scheduling of a job to run on a plurality of computers in a computer network comprising a computer readable medium having embedded computer readable code. The computer readable medium includes; (i) program instructions that enable selection of a domain that includes at least a subset of the computers on which the job is to run; (ii) program instructions that automatically generate a list of computers in the selected domain; (iii) program instructions that enable selection of the computers from the generated list of computers on which the job is to run; (iv) program instructions that enable creation of a configuration file for storing an identification of the selected domain and the job to be run on the selected computers; and (v) program instructions that transmit the configuration file to the task scheduler of each selected computer for installation and execution of the job.
In yet another aspect of the invention, a job scheduler system is provided for remote scheduling of a job to run on a plurality of computers in a computer network. The job scheduler system has a plurality of components. A first component enables selection of a domain that includes at least a subset of the computers on which the job is to run. A second component automatically generates a list of computers in the selected domain. A third component enables selection of the computers from the generated list of computers on which the job is to run. A fourth component enables creation of a configuration file for storing an identification of the selected domain and the job to be run on the selected computers. A fifth component transmits the configuration file to the task scheduler of each selected computer for installation and execution of the job.
These and other advantages and aspects of the present invention will become apparent and more readily appreciated from the following detailed description of the invention taken in conjunction with the accompanying drawings, as follows.
The following description of the invention is provided as an enabling teaching of the invention and its best, currently known embodiment. Those skilled in the art will recognize that many changes can be made to the embodiments described while still obtaining the beneficial results of the present invention. It will also be apparent that some of the desired benefits of the present invention can be obtained by selecting some of the features of the present invention without utilizing other features. Accordingly, those who work in the art will recognize that many modifications and adaptations of the invention are possible and may even be desirable in certain circumstances and are part of the present invention. Thus, the following description is provided as illustrative of the principles of the invention and not in limitation thereof since the scope of the present invention is defined by the claims.
The exemplary embodiment of the invention is described in terms of the Microsoft .NET framework and the C# high level language. The .NET framework has two main elements: a virtual machine called the Common Language Runtime (CLR) and the Base Class Libraries (BCL). When a program is developed for .NET in a high level language such as C# or VB.NET, the compiler generates Intermediate Language (IL) which is similar to assembly language code. The CLR then takes the code in IL form and converts it to machine code that it executes. The code that is generated is called managed code. The CLR controls all aspects of allocating memory and lifetime of objects. The BCL is a set of classes and functions that enable the programmer to communicate with the operating system and other technologies.
C# is a language derived from C++ by Microsoft for the .NET Framework. C# doesn't use pointers, has single inheritance, does not have macro support, and does not have template support. Single inheritance means that a class can only derive from at most one other class. When a class inherits from another class, it gains all the properties, methods, fields, events, and constructors from the class from which it inherited (i.e., the base class). The class that inherits from the base class is referred to as the derived class.
Most of the BCL classes are written in C#. The other principal language for the .NET Framework is Visual Basic.NET (VB.NET) that has been modified significantly from Visual Basic to account for the object-oriented features of the BCL. Both C# and VB compile to IL, thus their performance is about the same.
It is important for applications to identify users and control access to resources. Authentication is the act of determining the identity of the requesting user. Typically, the user must present credentials such as a name/password pair in order to be authenticated. Once the authenticated identity is established, the right to access a given resource must be determined.
The job scheduler of the invention is a software-implemented application written in the C# high level programming language and requires the Microsoft .NET framework to be on the machine on which it is running. The job scheduler invention does not require the .NET framework to be on the machines to which it is sending jobs. The job scheduler application is installed by copying two files—the job scheduler executable file “JobScheduler.exe” and the task scheduler dynamic link library (DLL) file “TaskScheduler.dll”- to the machine from which the application will be run. As is well known in the art, a DLL is a library of software modules that can be accessed and executed by other programs. DLL files do not get loaded into random access memory (RAM) until needed by another program. DLL files are dynamically linked with the program that calls them during program execution rather than being compiled with the calling program. In the invention, the task scheduler dynamic link library is accessed and executed by the job scheduler executable file. The job scheduler application utilizes a configuration (.cfg) file that is created on the fly. All settings for the job scheduler application can be made from within the application and then saved to the configuration file. Some of the settings such as the User ID and password are encrypted.
Very little setup is required to use the job scheduler initially. Except for a list of the domains the user plans to use and creating a User ID and password from which to run the jobs, everything else is built into the job scheduler.
As illustrated in
Although the job scheduler will normally operate using the built in system ID, the user may want to run a job which requires network access, e.g., to copy files, to write to a central log or any other job that requires network credentials. To add a network ID and password, the user selects the “Enable Set User ID” function from the “Tools” drop down menu 202 of the job scheduler user interface 200 as illustrated in
Although the job scheduler can pull every machine known on the network, the user will often prefer to work with a specific set of known machines.
When the job scheduler is first brought up, the list of computers (machines) is blank and the user can fill the list by selecting the domain that the user wants to work with, or by importing a list. As part of selecting a domain, the user can also select whether to work with servers or workstations. By default, the job scheduler will bring up a list of servers. The user can open the “Tools” drop down menu 202 on the job scheduler user interface 200 and select “Workstations” as shown in
By right clicking on the machine list as exemplified in
The job scheduler can also filter computers based upon function or operating system platform (e.g., Windows 2000 or 2003). On the right hand side of the job scheduler user interface is a toolbar 710 with a set of icons. Each icon represents a type of server or an operating system. From top to bottom as illustrated in
When the user clicks an operating system (OS) icon 714 on the tool bar 700 and reselects the domain, the job scheduler will populate the list with the server names, the associated operating systems (e.g., Windows 2000 or 2003) and, if applicable, the related service pack for the associated operating system.
If a network ID has been added to the tool, the job scheduler will use this ID and password to create the job on the individual machines. If a network ID has not been added, or if the “System Account” checkbox 902 is checked, the local system account will be used to process the jobs.
As illustrated in
As illustrated in
As illustrated in
As illustrated in
As illustrated in
Once the user has completed all the job information and placed a checkbox in the list of machines that the user want the job to run on, clicking the “Schedule” button 1020 will result in the tool running through the machine list and place the job in the task scheduler of every machine selected. Also, if the job the user is creating already exists on a machine, when the job scheduler gets to that machine it will remove the existing job before it creates the new one as long as they have the same name.
Consequently, the task scheduler may place the job on servers/workstations that the user had no intention of doing. By selecting each such machine from the list of machines, and clicking the “Remove” button 1030, the job scheduler will go to each machine selected and remove the job if it exists.
The job scheduler is designed to provide security in placing jobs on machines in a domain. The job scheduler also keeps track of the user that is running this application. The log files are created with the name of the user who is logged onto the machine from which the job scheduler tool is being run. The job scheduler tool logs every activity that occurs as part of a scheduling process with the date-time stamp and the activities being performed. Successes and errors are also logged.
The system and method of the present invention have been described as computer-implemented processes. It is important to note, however, that those skilled in the art will appreciate that the mechanisms of the present invention are capable of being distributed as a program product in a variety of forms, and that the present invention applies regardless of the particular type of signal bearing media utilized to carry out the distribution. Examples of signal bearing media include, without limitation, recordable-type media such as diskettes or CD ROMs, and transmission type media such as analog or digital communications links.
The corresponding structures, materials, acts, and equivalents of all means plus function elements in any claims below are intended to include any structure, material, or acts for performing the function in combination with other claim elements as specifically claimed.
Those skilled in the art will appreciate that many modifications to the exemplary embodiment are possible without departing from the spirit and scope of the present invention. In addition, it is possible to use some of the features of the present invention without the corresponding use of the other features. Accordingly, the foregoing description of the exemplary embodiment is provided for the purpose of illustrating the principles of the present invention and not in limitation thereof since the scope of the present invention is defined solely by the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5790431 | Ahrens, Jr. et al. | Aug 1998 | A |
5805897 | Glowny | Sep 1998 | A |
5832262 | Johnson et al. | Nov 1998 | A |
5978829 | Chung et al. | Nov 1999 | A |
6014760 | Silva et al. | Jan 2000 | A |
6038586 | Frye | Mar 2000 | A |
6148322 | Sand et al. | Nov 2000 | A |
6163805 | Silva et al. | Dec 2000 | A |
6442648 | Genduso et al. | Aug 2002 | B1 |
6466328 | Bradley et al. | Oct 2002 | B1 |
6470375 | Whitner et al. | Oct 2002 | B1 |
6598067 | Wydra et al. | Jul 2003 | B1 |
6658465 | Touboul | Dec 2003 | B1 |
6763519 | McColl et al. | Jul 2004 | B1 |
6829765 | Chan et al. | Dec 2004 | B1 |
7085831 | Larkin | Aug 2006 | B2 |
7111204 | Couturier et al. | Sep 2006 | B1 |
7120684 | Lawing et al. | Oct 2006 | B2 |
7398272 | Hindawi et al. | Jul 2008 | B2 |
20010052006 | Barker et al. | Dec 2001 | A1 |
20020165906 | Ricart et al. | Nov 2002 | A1 |
20030066092 | Wagner et al. | Apr 2003 | A1 |
20030187907 | Ito | Oct 2003 | A1 |
20030233483 | Melchione et al. | Dec 2003 | A1 |
20040111705 | Motoyama et al. | Jun 2004 | A1 |
20040139147 | Duquenne et al. | Jul 2004 | A1 |
20040216110 | Noll et al. | Oct 2004 | A1 |
20040243997 | Mullen et al. | Dec 2004 | A1 |
20050076102 | Chen et al. | Apr 2005 | A1 |
20050198203 | Tsai et al. | Sep 2005 | A1 |
20050228855 | Kawato | Oct 2005 | A1 |
20050268300 | Lamb et al. | Dec 2005 | A1 |
Number | Date | Country |
---|---|---|
0207348 | Jan 2002 | WO |
Entry |
---|
Cao, et al., “A Taxonomy of Application Scheduling Tools for High Performance Cluster Computing,” Scheduling-Tools.tex; Kluwer Academic Publishers, Apr. 13, 2004. |
Kale, et al., “An Adaptive Job Scheduler for Timeshared Parallel Machines,” Department of Computer Science, University of Illinois, Urbana-Champaign, IL, Sep. 27, 2000. |
Number | Date | Country | |
---|---|---|---|
Parent | 16114649 | Aug 2018 | US |
Child | 16697105 | US | |
Parent | 15471143 | Mar 2017 | US |
Child | 16114649 | US | |
Parent | 15051499 | Feb 2016 | US |
Child | 15471143 | US | |
Parent | 14698291 | Apr 2015 | US |
Child | 15051499 | US | |
Parent | 14274957 | May 2014 | US |
Child | 14698291 | US | |
Parent | 11414874 | May 2006 | US |
Child | 14274957 | US |