Re: Holy Cow -- What happened to bash / vi??

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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@gerardo ~]# lsof -n | grep "sbin/init"
init         1   root  txt       REG        8,1     31352    1079262 /sbin/init <<< note the 'txt' at 4th field.
[root@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@gerardo ~]$ vi coco.sh 

[djgera@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@gerardo ~]$ ./coco.sh
bash: ./coco.sh: /bin/bash: bad interpreter: Text file busy


Another simple example:

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

echo "Hola mundo!"
[djgera@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@gerardo ~]$ gcc coco.c -o coco
[djgera@gerardo ~]$ ./coco &
[1] 4234
[djgera@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@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



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux