[BASH] signalling


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [BASH] signalling
# 1  
Old 08-17-2017
[BASH] signalling

Hi guys,

I am using slurm to send file to make calculation on a server at my university.
The time limit for these calculation is 5 days but sometimes it is not enough. For this reason I need a clean up function that before the calculation ends copy the unfinished calculation file ( in order to restart them later). I trapped this function with a SIGUSR2 signal and I used the command --signal=SIGUSR2@600 to launch the signal 10 minutes before the end of the calculation but it doesn't seems to work. You will find following the code:

this is the command:

Code:
FILE=0
InPath="${inputdir}/*.gjf"
for FILE in $InPath ; do
   if [ -s ${FILE} ]
   then
        FILENAME=${FILE##*/}
        FILENAME=${FILENAME%.*}

        JOB=${FILENAME:0:5}
        echo ${FILE} was submitted as ${JOB}
        mv "${inputdir}/${FILENAME}".*  "${submitdir}/"
        outputpath="${outputdir}/${FILENAME}.out"

        # Launch the executable
SubFile="${submitdir}/${FILENAME}.gjf"

sbatch -A jgu-heinze-oshell -p ${QUEUE} -J ${JOB} -o ${outputpath} -n ${PROCS} -t ${RUN} --mem-per-cpu=2000 --signal=SIGUSR2@600  ./orca.sh ${SubFile}

FILENAME=""
fi    
done


This is the orca.sh file


Code:
# Store working directory to be safe
SAVEDPWD=$(pwd)
 
# We define a bash function to do the cleaning when the signal is caught
cleanup(){
	
	for FILE3 in "${rundir}"/*.gjf ; do
   if [ -s ${FILE3} ]
   then
        FILENAME=${FILE3##*/}
        FILENAME=${FILENAME%.*}

   

    rm /localscratch/${SLURM_JOB_ID}/*.tmp
    cp /localscratch/${SLURM_JOB_ID}/* "${outputdir}"/
    mv "${rundir}"/${FILENAME}.* "${findir}"/
    exit 0

   fi
done
}
 
# Register the cleanup function when SIGUSR2 is sent,
# ten minutes before the job gets killed
trap 'cleanup' SIGUSR2
 
# Copy input file

#SubFile="${submitdir}/*.gjf"
# echo ${SubFile}
for FILE2 in ${SubFile} ; do
   if [ -s ${FILE2} ]
   then
        FILENAME=${FILE2##*/}
        FILENAME=${FILENAME%.*}


# ls /localscratch/
cp "${submitdir}/${FILENAME}".* /localscratch/${SLURM_JOB_ID}


mv "${submitdir}/${FILENAME}".* "${rundir}/"



# Go to jobdir and start the program
cd /localscratch/${SLURM_JOB_ID}
set OMPI_MCA_btl=self,sm
/cluster/Apps/orca/3.0.2/orca ${FILENAME}.gjf

# Call the cleanup function when everything went fine
cleanup

FILENAME=""
   fi
done

I do not undestrand why it doesn't work !!! SmilieSmilieSmilie

Thank you for your help
# 2  
Old 08-17-2017
Moderator's Comments:
Mod Comment Posting "Does not work" without explanation does not help you or anyone. If a command does not work for you, please show the exact circumstances you used it, and the exact error or malfunction you received. Do not paraphrase errors, or post the text as links, images, or attachments if you can avoid it: Paste the exact message, in code tags, like [code] text [/code] or by selecting the text and using the Image button.

Thank you.

The UNIX and Linux Forums
# 3  
Old 08-21-2017
Hello,

Unluckily, there is no signal error.

The clean up function should just copy some file with the .Hess extention from the calculation computer to mine. And it should do it when the SIGUSR2 is received (should be 10 minutes before the end of the 5th day).
Since I do not receive the file on my computer, there are 2 possible explanation to my opinion:

1) The Cleanup function is written wrong.
2) The SIGUSR2 is not received.

Since I can't find error in the cleanup function I think it should be the second option.
# 4  
Old 08-21-2017
Quote:
Originally Posted by gbengasi
Hello,

Unluckily, there is no signal error.

The clean up function should just copy some file with the .Hess extention from the calculation computer to mine. And it should do it when the SIGUSR2 is received (should be 10 minutes before the end of the 5th day).
Since I do not receive the file on my computer, there are 2 possible explanation to my opinion:

1) The Cleanup function is written wrong.
2) The SIGUSR2 is not received.

Since I can't find error in the cleanup function I think it should be the second option.
Have you tested the cleanup function? How do you know it works as expected?

Have you tried manually sending SIGUSR2 to your program?

Have you tried using the sbatch program to send SIGUSR2 to a test program that can confirm whether it receives the signal?

Andrew
# 5  
Old 08-21-2017
Hi Andrew,

Let's start saying i'm not a programmer. I am a PhD student in chemistry and I need to use this computer for some calculation for my promotion. I have just some small experience with php.

The code was already there when I arrived. Recently, they changed the enviroinment on the calculation computer (they moved to SLURM) and so we had to adapt the code. Particularly, in the "guide SmilieSmilie" furnished by the university it is specified that slurm do not send automatically the signal when the calculation is running out of time and we should add this new command
Code:
"--signal=SIGUSR2@600"

Since the code was working before moving to SLURM I thought that the problem could be in the signal that don't arrive.

I tried once to signal manually and it didn't work, actually. But, since I am not experienced, I don't know If I did mistake in signalling manually, or if the code is wrong. I added even an
Code:
echo signal received

in the cleanup function but I didn't see nothing

If you have some suggestion you are really welcome SmilieSmilie.

Thank you.
# 6  
Old 08-21-2017
Before we all poke around in the dark (SLURM, whatever it is, doesn't seem to be that familiar), I regard it to be your university's IT group / department - whoever moved to SLURM - responsibility to mitigate their actions' negative consequences.

Last edited by RudiC; 08-21-2017 at 02:33 PM.. Reason: typo
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

In Bash shell - the ps -ef shows only the /bin/bash but the script name is not displayed

In Bash shell - the ps -ef shows only the /bin/bash but the script name is not displayed ? Is there any way to get the script names for the process command ? --- Post updated at 08:39 AM --- in KSH (Korn Shell), my command output shows the script names but when run in the Bash Shell... (3 Replies)
Discussion started by: i4ismail
3 Replies

2. UNIX for Beginners Questions & Answers

Escape bash-special character in a bash string

Hi, I am new in bash scripting. In my work, I provide support to several users and when I connect to their computers I use the same admin and password, so I am trying to create a script that will only ask me for the IP address and then connect to the computer without having me to type the user... (5 Replies)
Discussion started by: arcoa05
5 Replies

3. Shell Programming and Scripting

How to run several bash commands put in bash command line?

How to run several bash commands put in bash command line without needing and requiring a script file. Because I'm actually a windows guy and new here so for illustration is sort of : $ bash "echo ${PATH} & echo have a nice day!" will do output, for example:... (4 Replies)
Discussion started by: abdulbadii
4 Replies

4. Shell Programming and Scripting

Bash to select text and apply it to a selected file in bash

In the bash below I am asking the user for a panel and reading that into bed. Then asking the user for a file and reading that into file1.Is the grep in bold the correct way to apply the selected panel to the file? I am getting a syntax error. Thank you :) ... (4 Replies)
Discussion started by: cmccabe
4 Replies

5. UNIX for Dummies Questions & Answers

Im new to bash scriping and i found this expression on a bash script what does this mean.

# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi espeacailly the top regex part? ---------- Post updated at 06:58 PM ---------- Previous update was... (1 Reply)
Discussion started by: kevin298
1 Replies

6. Shell Programming and Scripting

Using arrays in bash using strings to bash built-in true

I have the following code and for some reason when I call the program using /home/tcdata/tatsh/trunk/hstmy/bin/bash/raytrac.bash --cmod=jcdint.cmod I get hasArgument = hasArgument = true Somehow the array element is returning even though I have not chosen the option. ... (41 Replies)
Discussion started by: kristinu
41 Replies

7. UNIX for Advanced & Expert Users

ftp - any best practices for signalling end of transfer?

Hi, I'm writing shell scripts to handle incoming and outgoing automated sftp transfers between a local server and various remote servers belonging to different organizations. I'm wondering if there are any recommended or "best practices" for signalling the end of a ftp file transmission... (2 Replies)
Discussion started by: _dev_null
2 Replies

8. Programming

Signalling interrupts to user space

What is the simplest function I can use to signal an interrupt from kernel module to user space. I knw the usr app pid in my module. Also can someone explain the parameters in kill_fasync and send_sig (0 Replies)
Discussion started by: dragonpoint
0 Replies

9. Shell Programming and Scripting

how to make your bash script run on a machine with csh and bash

hi, i have a script that runs on bash and would like to run it on a machine that has csh and bash. the default setting on that machine is csh. i dont want to change my code to run it with a csh shell. is there any way i can run the script (written in bash) on this machine? in other words is there... (3 Replies)
Discussion started by: npatwardhan
3 Replies

10. Shell Programming and Scripting

passing variable from bash to perl from bash script

Hi All, I need to pass a variable to perl script from bash script, where in perl i am using if condition. Here is the cmd what i am using in perl FROM_DATE="06/05/2008" TO_DATE="07/05/2008" "perl -ne ' print if ( $_ >="$FROM_DATE" && $_ <= "$TO_DATE" ) ' filename" filename has... (10 Replies)
Discussion started by: arsidh
10 Replies
Login or Register to Ask a Question