/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

Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our daily email newsletter to make sure you don't miss a single tip/tricks. Subscribe to our weekly newsletter here!

{ 3 comments… read them below or add one }

1 richard 01.07.09 at 9:05 am

I had type this command :
pkill myscript.sh

but if you want use lsof the -t option show only the PID :
kill `lsof -t myscript.sh`

2 Vivek Gite 01.07.09 at 9:09 am

Richard,

Thanks for pointing out -t option.

3 richard 01.07.09 at 9:11 am

Sorry,

for pkill command I forgot the option -f :
pkill -f myscript.sh

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Tagged as: , , , , , , ,

Previous post: yum Download All Source Packages (SRPM) From RedHat / CentOS WebSite

Next post: Apache: Make Changes In a Config File Take Effect Without Restarting Server