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
Featured Articles:
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- My 10 UNIX Command Line Mistakes
- 10 Greatest Open Source Software Of 2009
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- Top 20 OpenSSH Server Best Security Practices
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Linux Video Editor Software
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!
- Email FAQ to a friend
- Download PDF version
- Printable version
- Comment RSS feed
- Last Updated: 01/6/09



{ 4 comments… read them below or add one }
I had type this command :
pkill myscript.shbut if you want use lsof the -t option show only the PID :
kill `lsof -t myscript.sh`Richard,
Thanks for pointing out -t option.
Sorry,
for pkill command I forgot the option -f :
pkill -f myscript.shHow about a real solution: allow interpreters to run files that are open and locked! This (recent) kernel change sucks.