/bin/bash: bad interpreter: Text file busy Error and Solution

Q. I’m getting an error as follows while trying to run a shell script over remote ssh session:

./myscript.sh
/bin/bash: bad interpreter: Text file busy

How do I fix this error message and run the script?

A. This error means some other process or user is accessing your file. Your script file is open and hence bash giving out this error.

To list open file use lsof command, enter:
# lsof | grep myscript.sh
Sample output:

cat       4995      root    1w      REG                8,2     1374   28409914 /home/vivek/myscript.sh
cat       5031      root    1w      REG                8,2     1374   28409914 /home/vivek/myscript.sh
cat       5069      root    1w      REG                8,2     1374   28409914 /home/vivek/myscript.sh

You can wait or simply kill those process with kill command:
# kill 4995 5031 5069
Now, try to run script again:
# ./myscript.sh

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.