Sponsored Content
Top Forums Programming How to find if a process a daemon ? Post 302218737 by Perderabo on Saturday 26th of July 2008 08:15:11 AM
Old 07-26-2008
Quote:
Originally Posted by matrixmadhan
Any process guarded from SIGHUP signal as nohup process and detached from controlling terminal will have a ppid of 1
Not true. Any time any daemon which happens to be ignoring sighup forks, it creates a counterexample to this statement. (init could fork without creating a counterexample, but it never ignores hup)
Quote:
Originally Posted by matrixmadhan
but they are not daemonized.
Actually any process that happens to meet these criteria are daemons. No controlling terminal means the process is a daemon. Whether or not a process is a daemon has nothing to do with the ppid or what signals it is ignoring.

With most versions of unix when you log in on the system console, the ppid of your login shell will be 1. Before the rise of tcp/ip the ppid of every login shell was 1. None of these login shells are daemons, they all have controlling terminals. You still may have other getty lines in /etc/inittab. Each such line is a potential interactive shell with a ppid of 1. But most other children spawned by init do not open ttys and remain daemons.

When a process exits, its children become owned by init. This does not impact whether of not those children are daemons. Some are. Some aren't.

cron will not have a pid of 1. Every time cron spawns a process, that new process is a daemon. Each of these daemons will not have a ppid of 1... their ppid will be pointing to cron.

When you need to determine if a process is a daemon or not, the ppid is completely irrelevant. Daemons and non-daemons can have a ppid of 1. Daemons and non-daemons can have a ppid other than one.

Daemons sometimes choose to not ignore sighup. Both inetd and init itself are examples of daemons that are listening for a HUP. When they get one, they reconfigure themselves. But it is more common for a daemon to be ignoring HUP.

It really it very simple.
Daemons have no controlling terminal.
Non-daemons have a controlling terminal.

Examples of stuff that have no bearing on a process' daemon status...
pid
ppid
signal mask
 

10 More Discussions You Might Find Interesting

1. Programming

Daemon process

Hi, I have to write a daemon process, which performs certain operations in the background. Now since it performs operations in the background, it should not display anything to the standard output. The problem is that it still displays, text on standard output. Can anyone tell me (it is... (2 Replies)
Discussion started by: s_chordia
2 Replies

2. Programming

What is a daemon process?

This is gonna seem really silly to almost evryone here - but I need to know : what is a daemon process? Thanks (6 Replies)
Discussion started by: Kanu77
6 Replies

3. UNIX for Advanced & Expert Users

zombie daemon process!!

My daemon process is the child of init and init has the responsibility to remove it, once it turns zombie. But I want to ask why the daemon process which is child of init turns zombie in the first place. What measures I have to take to avoid this? rish (1 Reply)
Discussion started by: rish2005
1 Replies

4. Linux

daemon process

how i will write the daemon process,if any body have sample daemon process send me. (1 Reply)
Discussion started by: suresh_rupineni
1 Replies

5. Shell Programming and Scripting

How to starting process as daemon using ssh command?

Hello, I need to run a command on remote Linux using the ssh command from my local machine. I am able to execute the command on remote machine using ssh but it's behaving strangely. The command is supposed to start a daemon process on remote linux box and the control should return back to me... (5 Replies)
Discussion started by: nitinshukla
5 Replies

6. UNIX for Dummies Questions & Answers

How to write Pro*C daemon process using multithreading?

Hello, I am new to this forum and this is my first post here... I have never worked on either Pro*C or Multithreading..Now, i have to write a Pro*C, Multithreading daemon process.. I dont know where to start.. Can anybody help me with examples? 1. need to write a Pro*C multithreading... (0 Replies)
Discussion started by: kachiraju
0 Replies

7. Shell Programming and Scripting

Diff between Bg and daemon process

Dear Unix Gurus, Plz provide major diff between background process and daemon process. Is it control available for daemon process?. (3 Replies)
Discussion started by: kkl
3 Replies

8. Shell Programming and Scripting

run this script as a daemon process

Hi, HI , I have a simple script that moves files from one folder to another folder, I have already done the open-ssh server settings and the script is working fine and is able to transfer the files from one folder to another but right now I myself execute this script by using my creditianls to... (3 Replies)
Discussion started by: nks342
3 Replies

9. UNIX for Dummies Questions & Answers

Oracle process running as user daemon

Hi, When process listing, I came across a process running as user daemon. daemon 23576 23574 0 07:32:04 ? 0:07 oracle (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) root 27526 27444 1 07:38:43 ttyp5 0:00 grep 23574 why a process runs as user daemon, when it should be... (3 Replies)
Discussion started by: wilsonee
3 Replies

10. Programming

Daemon process

I wish to make a process run in the background, but only one instance of it, and not many, so when the program is loaded, it has to check whether another instance of the same program is running and if so to exit. How do I do this ? (4 Replies)
Discussion started by: sundaresh
4 Replies
init(8) 						      System Manager's Manual							   init(8)

NAME
init - Process control initialization SYNOPSIS
/sbin/init [0123456789MmQqSs] DESCRIPTION
The init program initializes the system by creating and controlling processes. The processes run by init at each run level are defined in the inittab file. The init program reads and processes the entries in the inittab file. The init program considers the system to be in a run level at any given time; each run level has a specific group of processes that run at that level. The init program operates in one of eleven run levels: 0-9 and Ss. Of these, only 0, s, 2, and 3 are configured in the inittab file by default. The run level changes when a privileged user invokes init. The new init sends appropriate signals to the original init that tell it which run level to change to. Running the init program is the last step in the boot process after the root file system is mounted. The init program scans the inittab file and looks for an entry with the initdefault keyword. If the entry is there, init uses the run level specified in that entry as the initial run level to enter. If the entry is not found in the inittab file or if the inittab file does not exist, init requests that the user enter a run level from the system console, /dev/console. If the user enters the letter s, init enters single user state, assigns the virtual console terminal to the user's terminal and opens it for reading and writing. The su command is invoked and the system displays a message on the console stating the location of the virtual console. To change the run level, the user specifies either the 0, 2, 3, or s flag. For the first post-boot execution of init to a run level other than single user, it searches the inittab file for entries at the new run level that have the boot or bootwait keywords. If the run level that is specified matches the entry, the init program acts on these entries before processing other entries in the inittab file. Any special initialization of the system, such as checking and mounting file systems, takes place before users are allowed on the system. The init program then scans the inittab file to find all entries that are to be handled for that level. Before starting a new process, init reads each entry in the inittab file, and for each entry that should be respawned, init forks a child process. After spawning all required processes, init waits for one of its descendant processes to stop, a power-fail signal, or a signal that it should change the run level. If one of the preceding three conditions occurs, init reexamines the inittab file. You can add new entries to the inittab file, but init does not reexamine the file until one of the three previous conditions actually occurs. To immedi- ately reexamine the inittab file, invoke the init program with the q flag. FLAGS
Shuts down and halts the system. Changes the run level to a multiuser state with local processes and daemons. Changes the run level to a multiuser state with remote processes and daemons. Changes run level to that specified by the number flag in the /etc/inittab file. If no such entry exists, no action is taken and no message is output. Moves control to the console device and halts to single-user mode. Forces init to reexamine the entries in the inittab file and terminates any live processes which have had their configuration entries removed from /etc/inittab. Users should be aware that when a getty(8) line has been removed from /etc/inittab, and a login shell is active on the ter- minal line that was formerly designated in inittab as a getty entry, the login shell will be killed. Changes the run level to a single user state with only the essential kernel services. FILES
Specifies the command path Specifies the init command control file Specifies the permanent login accounting file RELATED INFORMATION
Commands: getty(8), rc0(8), rc2(8), rc3(8), shutdown(8) Calls: kill(2), reboot(2) Files: inittab(4) delim off init(8)
All times are GMT -4. The time now is 04:33 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy