What is the best way to start child processso that when the parent process is terminated, the child process will also get terminated.
I can see my process as a tree:
1 26152 26150 26150 ? -1 Sl 1000 0:00 /usr/bin/perl /usr/local/bin/disp
26152 26171 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_500
26171 26172 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_500 600
26152 26174 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_1000
26174 26175 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_1000 600
26152 26177 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_2000
26177 26178 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_2000 600
26152 26181 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_5000
26181 26186 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_5000 600
26152 26189 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_15000
26189 26190 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_15000 600
26152 26195 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_30000
26195 26197 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_30000 600
26152 26198 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_60000
26198 26201 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_60000 28800
26152 26213 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_900000
26213 26217 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_900000 86400
26152 26219 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_3600000
26219 26225 26150 26150 ? -1 S 1000 0:00 | \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_3600000 86400
26152 26233 26150 26150 ? -1 S 1000 0:00 \_ /bin/bash /var/tmp/job_86400000
26233 26235 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_86400000 86400
but when I kill the parent process (kill -9 26152
) its not deleting the child processes. Instead, child process parent's process parent is becoming the parent
1 26171 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_500
26171 26172 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_500 600
1 26174 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_1000
26174 26175 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_1000 600
1 26177 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_2000
26177 26178 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_2000 600
1 26181 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_5000
26181 26186 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_5000 600
1 26189 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_15000
26189 26190 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_15000 600
1 26195 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_30000
26195 26197 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_30000 600
1 26198 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_60000
26198 26201 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_60000 28800
1 26213 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_900000
26213 26217 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_900000 86400
1 26219 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_3600000
26219 26225 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_3600000 86400
1 26233 26150 26150 ? -1 S 1000 0:00 /bin/bash /var/tmp/job_86400000
26233 26235 26150 26150 ? -1 S 1000 0:00 \_ /usr/bin/perl /usr/local/bin/qrun /var/tmp/ml_86400000 86400
Kindly help me. Am I doing something wrong, or do I need to make some change while starting the process?