I am working on a cluster running RHEL and I submit jobs using the following command.
sbatch MyScript.sh
The content of the MyScript.sh are as below.
#!/bin/sh
# ....
# Other SBATCH related commands are here
# ....
## Script begins here
for d in lambda.*/
do
cd ${d%?}
echo "Changed Directory"
cp -r ../Transfer/${d%?}/ENMIN/ ./
echo "Transferred"
rm -rf ../Transfer/${d%?}
echo "Removed"
cd ENMIN
time mpirun -np $SLURM_NTASKS gmx_mpi mdrun -v -stepout 1000 -s enmin.tpr -deffnm enmin
echo "Energy minimization done of $d cycle"
echo "Copying to OutboundTransfer"
mkdir ../../Transfer/${d%?}
cp -r ../ENMIN ../../Transfer/${d%?}
echo "Copied"
cd ../../
done
The problem is the line cp -r ../Transfer/${d%?}/ENMIN/ ./
, which is not working. The script is not moving beyond this line. It copies one file and that's it ..it stops doing anything productive. It prints "Changed Directory" to the log and nothing else.
Two strange things: (1) the "cp" (inside vi) is colored differently than other commands and (2) when I check squeue, the job seems to be running without anything actually happening (as if it is in a loop).
The pertinent directory structure is as below (output of tree).
|-- lambda.00
|-- lambda.01
|-- lambda.02
|-- lambda.03
|-- lambda.04
|-- lambda.05
|-- lambda.06
|-- lambda.07
|-- lambda.08
|-- lambda.09
|-- lambda.10
|-- lambda.11
|-- lambda.12
|-- lambda.13
|-- lambda.14
|-- lambda.15
|-- lambda.16
|-- lambda.17
|-- lambda.18
|-- lambda.19
|-- lambda.20
|-- lambda.21
|-- lambda.22
|-- lambda.23
|-- lambda.24
|-- lambda.25
|-- lambda.26
|-- lambda.27
|-- lambda.28
|-- lambda.29
`-- Transfer
|-- lambda.00
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.01
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.02
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.03
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.04
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.05
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.06
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.07
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.08
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.09
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.10
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.11
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.12
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.13
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.14
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.15
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.16
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.17
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.18
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.19
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.20
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.21
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.22
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.23
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.24
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.25
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.26
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.27
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
|-- lambda.28
| `-- ENMIN
| |-- enmin.tpr
| `-- mdout.mdp
`-- lambda.29
`-- ENMIN
|-- enmin.tpr
`-- mdout.mdp
I have limited control over this cluster. What are my options to make this script work?
sh
is the problem. Butuname -a
gives far more than"el" 64bit
. Is this some form of Linux? – terdon♦ Sep 14 '20 at 8:13cp
hangs instead of complaining you don't have permission, it isn't a permissions issue. It might simply be a huge file that takes several hours to copy or there might be some other issue that the sysadmin will know. If my solution usingmv
instead ofcp
doesn't help, you really should talk to the sysadmin. – terdon♦ Sep 14 '20 at 8:52