[arch-general] Holy Cow -- What happened to bash / vi??

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Tue Jun 23 01:39:33 EDT 2009


David C. Rankin wrote:

<snip>
> 	I get this new message:
>
> [00:08 archangel:/etc] # noc fstab
> bash: /usr/local/bin/noc: /bin/bash: bad interpreter: Text file busy
>
>   
<snip>
> 	Text file busy?? It's a text file, it's not busy, it's either saved or you 
> get what was present the last time it was saved, but it certainly isn't busy.
>
>   
<snip>

"Text file busy" is not related with text files :)

Text refers to the "text section" of the executable. The text section of an executable is where the code resides, in other words the real program.

This message appears when a process is running and you try to overwrite it, for example:

[root at gerardo ~]# lsof -n | grep "sbin/init"
init         1   root  txt       REG        8,1     31352    1079262 /sbin/init <<< note the 'txt' at 4th field.
[root at gerardo ~]# echo 'hola' > /sbin/init
-bash: /sbin/init: Text file busy

But in this case is different, you are open(2) a file in read/write mode (O_RDWR), and you tried to execute it execve(2). This is impossible.

Again lsof help to view this:

[djgera at gerardo ~]$ vi coco.sh 

[djgera at gerardo ~]$ lsof -n | grep coco.sh
vi        4127 djgera    4uW     REG        8,6        32 113481 /home/djgera/coco.sh #### see the 'W' in 4th field.
[djgera at gerardo ~]$ ./coco.sh
bash: ./coco.sh: /bin/bash: bad interpreter: Text file busy


Another simple example:

[djgera at gerardo ~]$ cat coco.sh
#!/bin/bash

echo "Hola mundo!"
[djgera at gerardo ~]$ cat coco.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#define __USE_GNU
#include <fcntl.h>

int main(int argc, char *argv[])
{
    int coco;
    coco = open("./coco.sh", O_RDWR);
    sleep(60);
    close(coco);
    return(0);
}
[djgera at gerardo ~]$ gcc coco.c -o coco
[djgera at gerardo ~]$ ./coco &
[1] 4234
[djgera at gerardo ~]$ lsof -n | grep coco.sh
coco      4234 djgera    3u      REG        8,6        32 113481 /home/djgera/coco.sh #### See the 'u' in 4th field.
[djgera at gerardo ~]$ ./coco.sh
bash: ./coco.sh: /bin/bash: bad interpreter: Text file busy


Good Luck!


(sorry my english)



-- 
Gerardo Exequiel Pozzi ( djgera )
http://www.djgera.com.ar
KeyID: 0x1B8C330D
Key fingerprint = 0CAA D5D4 CD85 4434 A219  76ED 39AB 221B 1B8C 330D



More information about the arch-general mailing list