Sponsored Content
Top Forums Shell Programming and Scripting Process existence or/and permission Post 302999688 by chebarbudo on Monday 26th of June 2017 09:33:01 AM
Old 06-26-2017
Process existence or/and permission

Hi,

In a bash script, I'm using kill -0 to test if I have permission to kill a process. There are 3 cases:
- the process exists and I have permission: OK
- the process doesn't exist and it's OK (because I decided to ignore processes that are already dead).
- I don't have permission and I want to raise an error.

If I use ps $pid, I cannot tell the difference between a process that does not exist and a process I cannot "see":
Code:
santiago@alphard:~$ ps 1 > /dev/null && echo OK || echo ERR
ERR
santiago@alphard:~$ sudo ps 1 > /dev/null && echo OK || echo ERR
OK

If I use kill -0 $pid, I could tell the difference reading stderr but it would be language specific:
Code:
santiago@alphard:~$ for pid in 1 123; do for lc in C fr_FR.utf-8; do LC_ALL=$lc; kill -0 $pid; echo Status is $?; done; done
-su: kill: (1) - Operation not permitted
Status is 1
-su: kill: (1) - Opération non permise
Status is 1
-su: kill: (123) - No such process
Status is 1
-su: kill: (123) - Aucun processus de ce type
Status is 1

Question: How can I programmatically tell if a process exists and if I have permission on it?

Regards
Santiago
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Loop for file existence

I wasn't sure if I should post it here of in the Shell Script category, but I figured it was definitely a newbie question. I'm trying to write a script that will check for the existence of a specific file (or for any files within the directory) and then take specific actions. I've removed all... (2 Replies)
Discussion started by: bd_joy
2 Replies

2. Shell Programming and Scripting

File existence

Hey all, I have total new with shell scripting so I don't know if what I need to do even possible, here it is...for a duration of time (say...1 hour) I need to check for the existence of a particular file, if it exists then I will invoke a java program or I will continue to check until a)... (2 Replies)
Discussion started by: mpang_
2 Replies

3. UNIX for Dummies Questions & Answers

Permission on files restricted to a process

Hello, I have this process app.fcgi and a directory containing images. I'd like to ensure that only app.cgi can access those images and more generally that folder.Thanks! (1 Reply)
Discussion started by: JCR
1 Replies

4. Shell Programming and Scripting

File existence using ls

Hi I want to check a particular file is available or not. But i know only the pattern of that file sat AB1234*.txt.I need the latest file name and it ll be used in the script. How can i do this using ls -ltr command. Thanks, LathishSundar V (2 Replies)
Discussion started by: lathish
2 Replies

5. Shell Programming and Scripting

check existence of the path

Hi How can I check if the path exist or not? echo "Enter path:"; read my_path; ##I should check whether my_path exists or not.... (5 Replies)
Discussion started by: tjay83
5 Replies

6. Shell Programming and Scripting

Help to Monitor the existence of a file

Hi Folks, Please tell me the unix shell script command to check for the existence of some .done file in a location on the UNIX server. (1 Reply)
Discussion started by: dinesh1985
1 Replies

7. Shell Programming and Scripting

bash about url existence

Hi, I want to make a bash script which is running like : 1.sh http://www. google.com and check if the url does exist printing a message. I want to save the source code of this page in a file. Could you help me ? (4 Replies)
Discussion started by: peter20
4 Replies

8. Shell Programming and Scripting

File existence

Hi I'm using the below command in shell script to check for file exists in the path if ..... fi path and test are variables path and the file exists but the commands inside if condition is executed (! operator used) Is the above way of checking for file existence is correct? ... (4 Replies)
Discussion started by: vinoth_kumar
4 Replies

9. Shell Programming and Scripting

File existence

Hope someone can help me on this In a directory ,files are dynamically generated.I need a script to do the following if files are not received for more than 2 hours or if the received file is empty then do something How can I put that in a script.Thank you eg. in cd /dir_name the... (13 Replies)
Discussion started by: haadiya
13 Replies

10. UNIX for Advanced & Expert Users

Permission to kill a process

I'm on AIX. I have triggered an infinite loop process (to keep looking for input file availability for further process). At present only I can kill the process. In case my colleague wants to kill the process for any reason, how do I provide permission to others to kill the process? Currently... (3 Replies)
Discussion started by: krishmaths
3 Replies
kill(2) 							   System Calls 							   kill(2)

NAME
kill - send a signal to a process or a group of processes SYNOPSIS
#include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); DESCRIPTION
The kill() function sends a signal to a process or a group of processes. The process or group of processes to which the signal is to be sent is specified by pid. The signal that is to be sent is specified by sig and is either one from the list given in signal (see sig- nal.h(3HEAD)), or 0. If sig is 0 (the null signal), error checking is performed but no signal is actually sent. This can be used to check the validity of pid. The real or effective user ID of the sending process must match the real or saved (from one of functions in the exec(2) family) user ID of the receiving process, unless the privilege {PRIV_PROC_OWNER} is asserted in the effective set of the sending process (see Intro(2)), or sig is SIGCONT and the sending process has the same session ID as the receiving process. A process needs the basic privilege {PRIV_PROC_SESSION} to send signals to a process with a different session ID. See privileges(5). If pid is greater than 0, sig will be sent to the process whose process ID is equal to pid. If pid is negative but not (pid_t)-1, sig will be sent to all processes whose process group ID is equal to the absolute value of pid and for which the process has permission to send a signal. If pid is 0, sig will be sent to all processes excluding special processes (see Intro(2)) whose process group ID is equal to the process group ID of the sender. If pid is (pid_t)-1 and the {PRIV_PROC_OWNER} privilege is not asserted in the effective set of the sending process, sig will be sent to all processes excluding special processes whose real user ID is equal to the effective user ID of the sender. If pid is (pid_t)-1 and the {PRIV_PROC_OWNER} privilege is asserted in the effective set of the sending process, sig will be sent to all processes excluding special processes. RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is returned, no signal is sent, and errno is set to indicate the error. ERRORS
The kill() function will fail if: EINVAL The sig argument is not a valid signal number. EPERM The sig argument is SIGKILL and the pid argument is (pid_t)-1 (that is, the calling process does not have permission to send the signal to any of the processes specified by pid). The effective user of the calling process does not match the real or saved user and the calling process does not have the {PRIV_PROC_OWNER} privilege asserted in the effective set, and the calling process either is not sending SIGCONT to a process that shares the same session ID or does not have the {PRIV_PROC_SESSION} privilege asserted and is trying to send a signal to a process with a different session ID. ESRCH No process or process group can be found corresponding to that specified by pid. USAGE
The sigsend(2) function provides a more versatile way to send signals to processes. ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |Standard | +-----------------------------+-----------------------------+ |MT-Level |Async-Signal-Safe | +-----------------------------+-----------------------------+ SEE ALSO
kill(1), Intro(2), exec(2), getpid(2), getsid(2), setpgrp(2), sigaction(2), sigsend(2), signal(3C), signal.h(3HEAD), attributes(5), privi- leges(5), standards(5) SunOS 5.11 22 Mar 2004 kill(2)
All times are GMT -4. The time now is 10:49 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy