Windows / Linux Incompatibility

If your job is running a bash or shell script (includes the header #!/bin/bash), and it goes on hold, you might be experiencing a Windows/Linux incompability error. Files written in Windows (based on the DOS operating system) and files written in Mac/Linux (based on the UNIX operating system) use different invisible characters to mean "end of a line" in a file. Normally this isn't a problem, except when writing bash scripts; bash will not be able to run scripts if they have the Windows/DOS line endings.

To find why the job went on hold, look for the hold reason, either by running

[alice@submit]$ condor_q -af HoldReason

or by looking in the log file.

If a Windows/Linux incompatibility is the problem, the hold reason will look something like this:

Error from slot1_11@e189.chtc.wisc.edu: Failed to execute 
'/var/lib/condor/execute/slot1/dir_4086540/condor_exec.exe' with 
arguments 2: (errno=2: 'No such file or directory')

To check if this is the problem, you can open the script in the vi text editor, using its "binary" mode:

[alice@submit]$ vi -b hello-chtc.sh

(Replace hello-chtc.sh with the name of your script.) If you see ^M characters at the end of each line, those are the DOS line endings and that's the problem.
(Type :q to quit vi)

Luckily, there is an easy fix! To convert the script to unix line endings so that it will run correctly, you can run:

[alice@submit]$ dos2unix hello-chtc.sh

on the submit node and it will change the format for you. If you release your held jobs (using condor_release) or re-submit the jobs, you should no longer get the same error.

HTC Guides