Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Check if a process, session or task is currently active
ResourceFunction["ProcessRunningQ"][patt] gives True if there are any processes running on your computer system whose names match the string pattern patt. | |
ResourceFunction["ProcessRunningQ"][prop→val] gives True if there are any processes for which property prop has value val. | |
ResourceFunction["ProcessRunningQ"][<|prop1→val1,…|>] gives True if there are any processes for which property propi has value vali. |
pid | an Integer corresponding to a process ID |
ProcessObject[…] | a system process represented as a ProcessObject |
TaskObject[…] | a background task |
CloudObject[…] | a ScheduledTask deployed to the cloud |
WebSessionObject[…] | the underlying process used by the WebSessionObject |
ExternalSessionObject[…] | the underlying process used by the ExternalSessionObject |
KernelObject[…] | the link for communicating with the given subkernel |
LinkObject[…] | a LinkObject |
InputStream[…] | an input stream |
OutputStream[…] | an output stream |
"PID" | process ID |
"PPID" | parent process ID |
"Memory" | memory the process is using |
"StartTime" | date the process was started |
"RealTime" | time since the process started |
"SystemTime" | CPU time spent in kernel space |
"UserTime" | CPU time spent in user space |
"Threads" | number of threads |
"User" | the user the process belongs to |
"Program" | name of the program |
"Path" | full file path of the program |
Check if a process is currently running using a process ID:
In[1]:= | ![]() |
Out[1]= | ![]() |
Check if a process is running by name (results may be platform-dependent):
In[2]:= | ![]() |
Out[2]= | ![]() |
In[3]:= | ![]() |
Out[3]= | ![]() |
In[4]:= | ![]() |
Out[4]= | ![]() |
Check if a ProcessObject is running:
In[5]:= | ![]() |
Out[5]= | ![]() |
In[6]:= | ![]() |
Out[6]= | ![]() |
Close the process:
In[7]:= | ![]() |
Verify that it’s no longer running:
In[8]:= | ![]() |
Out[8]= | ![]() |
Check if a TaskObject is running:
In[9]:= | ![]() |
Out[9]= | ![]() |
In[10]:= | ![]() |
Out[10]= | ![]() |
Check again after it has finished:
In[11]:= | ![]() |
Out[11]= | ![]() |
Check if a stream is open:
In[12]:= | ![]() |
Out[12]= | ![]() |
In[13]:= | ![]() |
Out[13]= | ![]() |
In[14]:= | ![]() |
Out[14]= | ![]() |
In[15]:= | ![]() |
Out[15]= | ![]() |
Use string patterns:
In[16]:= | ![]() |
Out[16]= | ![]() |
In[17]:= | ![]() |
Out[17]= | ![]() |
Use an association of properties:
In[18]:= | ![]() |
Out[18]= | ![]() |
In[19]:= | ![]() |
Out[19]= | ![]() |
Check if a scheduled task deployed to the cloud is currently following its assigned schedule:
In[20]:= | ![]() |
Out[20]= | ![]() |
In[21]:= | ![]() |
Out[21]= | ![]() |
A task is not considered to be running if it is suspended:
In[22]:= | ![]() |
Out[22]= | ![]() |
In[23]:= | ![]() |
Out[23]= | ![]() |
TaskResume the task:
In[24]:= | ![]() |
Out[24]= | ![]() |
In[25]:= | ![]() |
Out[25]= | ![]() |
In[26]:= | ![]() |
Out[26]= | ![]() |
Check if a WebSessionObject is running:
In[27]:= | ![]() |
Out[27]= | ![]() |
In[28]:= | ![]() |
Out[28]= | ![]() |
Close the session using DeleteObject:
In[29]:= | ![]() |
Verify that it’s no longer running:
In[30]:= | ![]() |
Out[30]= | ![]() |
Check if an ExternalSessionObject is running:
In[31]:= | ![]() |
Out[31]= | ![]() |
In[32]:= | ![]() |
Out[32]= | ![]() |
Close the session using DeleteObject:
In[33]:= | ![]() |
Verify that it’s no longer running:
In[34]:= | ![]() |
Out[34]= | ![]() |
Check that parallel subkernels are still running:
In[35]:= | ![]() |
Out[35]= | ![]() |
In[36]:= | ![]() |
Out[36]= | ![]() |
Close one of the kernels:
In[37]:= | ![]() |
Out[37]= | ![]() |
Verify that one of the kernels is no longer running:
In[38]:= | ![]() |
Out[38]= | ![]() |
Check that a LinkObject is still running (this example requires the ability to launch new kernels with LinkLaunch on the current machine):
In[39]:= | ![]() |
Out[39]= | ![]() |
In[40]:= | ![]() |
Out[40]= | ![]() |
Get the $ProcessID of the linked kernel:
In[41]:= | ![]() |
Out[41]= | ![]() |
In[42]:= | ![]() |
Out[24]= | ![]() |
In[43]:= | ![]() |
Out[43]= | ![]() |
In[44]:= | ![]() |
Out[44]= | ![]() |
Check that it’s running by using the PID:
In[45]:= | ![]() |
Out[45]= | ![]() |
Close the link using LinkClose:
In[46]:= | ![]() |
Verify that it’s no longer running:
In[47]:= | ![]() |
Out[47]= | ![]() |
Check using the PID:
In[48]:= | ![]() |
Out[48]= | ![]() |
Processes do not need to be started by the current kernel:
In[49]:= | ![]() |
Out[49]= | ![]() |
In[50]:= | ![]() |
Out[50]= | ![]() |
Use the PID of a random system process:
In[51]:= | ![]() |
Out[51]= | ![]() |
In[52]:= | ![]() |
Out[52]= | ![]() |
When patt is a string pattern, ProcessRunningQ[patt] is equivalent to MatchQ[SystemProcesses[patt],{__ProcessObject}]:
In[53]:= | ![]() |
Out[53]= | ![]() |
In[54]:= | ![]() |
Out[54]= | ![]() |
The same is true for rules:
In[55]:= | ![]() |
Out[55]= | ![]() |
In[56]:= | ![]() |
Out[56]= | ![]() |
A LinkObject may still be reported as running if it appears in Links[] even if the connected process has been terminated:
In[57]:= | ![]() |
Out[57]= | ![]() |
Get the PID:
In[58]:= | ![]() |
Out[58]= | ![]() |
In[59]:= | ![]() |
Out[42]= | ![]() |
In[60]:= | ![]() |
Out[60]= | ![]() |
In[61]:= | ![]() |
Out[61]= | ![]() |
Get the corresponding ProcessObject:
In[62]:= | ![]() |
Out[62]= | ![]() |
Terminate the process with KillProcess instead of LinkClose:
In[63]:= | ![]() |
The LinkObject is still active:
In[64]:= | ![]() |
Out[64]= | ![]() |
In[65]:= | ![]() |
Out[65]= | ![]() |
In[66]:= | ![]() |
Out[66]= | ![]() |
However, the process itself is not:
In[67]:= | ![]() |
Out[67]= | ![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License