I would like to run a bash script or binary executable as root (even if the user who started the job doesn't have root rights) at the end of a job if I put an option in my spank plugin
2018-06-04 16:36 GMT+02:00 John Hearns <hear...@googlemail.com>: > That kinnddd.... of... defeats... the.... purpose.... of a job > scheduler. > I am very sure that you know why you need this and you have a good reason > for doing it. Over to others on the list, sorry. > > On 4 June 2018 at 16:15, Tueur Volvo <huitr...@gmail.com> wrote: > >> no I don't have dependency treated. >> >> during the job, I would like to run a program on the machine running the >> job >> but I'd like the program to keep running even after the job ends. >> >> 2018-06-04 15:30 GMT+02:00 John Hearns <hear...@googlemail.com>: >> >>> Tueur what are you trying to achieve here? The example you give is >>> touch /tmp/newfile.txt' >>> I think you are trying to send a signal to another process. Could this >>> be 'Hey - the job has finished and there is a new file for you to process' >>> If that is so, there may be better ways to do this. If you have a >>> post-processing step, then you can submit a job whihc depends on the main >>> job. >>> https://hpc.nih.gov/docs/job_dependencies.html >>> >>> On 4 June 2018 at 15:20, Tueur Volvo <huitr...@gmail.com> wrote: >>> >>>> thanks for your answer, i try some solution but it's not work >>>> >>>> i try to add setsid and setpgrp for isolate my new process but slurm >>>> job sleep 6secondes and reboot my machine (i test with reboot command, but >>>> we can make other bash command, it's just example) >>>> >>>> pid_t cpid; //process id's and process groups >>>> >>>> cpid = fork(); >>>> >>>> if( cpid == 0 ){ >>>> setsid(); >>>> setpgrp(); >>>> execl("/bin/sh", "sh", "-c", "sleep 10; reboot1&", NULL); >>>> >>>> } >>>> wait(NULL); >>>> >>>> >>>> maybe i have a error in my code ? >>>> >>>> 2018-05-31 9:37 GMT+02:00 Yair Yarom <ir...@cs.huji.ac.il>: >>>> >>>>> Hi, >>>>> >>>>> I'm not sure how slurm/spank handles child processes but this might be >>>>> intentional. So there might be some issues if this were to work. >>>>> >>>>> You can try instead of calling system(), to use fork() + exec(). If >>>>> that still doesn't work, try calling setsid() before the exec(). I can >>>>> think of situations where your process might still get killed, e.g. if >>>>> slurm (or even systemd) kills all subprocesses of the "job", by >>>>> looking at the cgroup. If that's the case, you'll need to move it to >>>>> another cgroup in addition/instead of setsid(). >>>>> >>>>> Yair. >>>>> >>>>> >>>>> >>>>> On Wed, May 30, 2018 at 5:16 PM, Tueur Volvo <huitr...@gmail.com> >>>>> wrote: >>>>> > Hello i have question, how run in background bash script in spank >>>>> plugin ? >>>>> > >>>>> > in my spank plugin in function : slurm_spank_task_init_privileged >>>>> > >>>>> > i want to run this script : >>>>> > >>>>> > system("nohup bash -c 'sleep 10 ; touch /tmp/newfile.txt' &"); >>>>> > >>>>> > i want to run in independant process this bash script, i don't want >>>>> wait 10 >>>>> > seconde in my slurm plugin >>>>> > >>>>> > i have this code : >>>>> > int slurm_spank_task_init_privileged (spank_t sp, int ac, char >>>>> **av) { >>>>> > >>>>> > system("nohup bash -c 'sleep 10 ; touch /tmp/newfile.txt' &"); >>>>> > >>>>> > return 0; >>>>> > >>>>> > } >>>>> > >>>>> > actualy it's not work, when slurm ending to run my job, he kill my >>>>> nohup >>>>> > command >>>>> > >>>>> > if i had in my c code sleep 12, my bash script work >>>>> > >>>>> > >>>>> > int slurm_spank_task_init_privileged (spank_t sp, int ac, char >>>>> **av) { >>>>> > >>>>> > system("nohup bash -c 'sleep 10 ; touch /tmp/newfile.txt' &"); >>>>> > >>>>> > sleep(12); >>>>> > >>>>> > return 0; >>>>> > >>>>> > } >>>>> > >>>>> > but i don't want to wait, i want to run my bash script in independant >>>>> > process >>>>> > >>>>> > thanks for advance for your help >>>>> > >>>>> > >>>>> > >>>>> > >>>>> >>>>> >>>> >>> >> >