subj: самоудаляющийся shell script (/bin/ash)?
Подкажите пример скрипта который будет сам себя удалять.
Подробнее:есть временная директория ``/my_temp_dir''
есть скрипт ``/my_temp_dir/srcipt.sh''
в скрипте выполняются некоторые полезные команды,
после этого должна быть удалена полностью директория ``/my_temp_dir''
( rm -rf /my_temp_dir )
затем ( sync )
затем ( mount -o remount,ro /dev/nftla / )
затем ( reboot )сложности:
если делать удаление как написано, то маунт ругается
``mount: Mounting /dev/nftla on / failed: Device or resource busy''Учесть что нет временной директории и диска в оперативке.
Никаких временных файлов после работы скрипта оставаться не должно, или
они должны быть удалены до перезагрузки.Ваши советы...
>subj: самоудаляющийся shell script (/bin/ash)?
>Подкажите пример скрипта который будет сам себя удалять.
>Подробнее:
>
>есть временная директория ``/my_temp_dir''
>есть скрипт ``/my_temp_dir/srcipt.sh''
>в скрипте выполняются некоторые полезные команды,
>после этого должна быть удалена полностью директория ``/my_temp_dir''
>( rm -rf /my_temp_dir )
>затем ( sync )
>затем ( mount -o remount,ro /dev/nftla / )
>затем ( reboot )
>
>сложности:
>если делать удаление как написано, то маунт ругается
>``mount: Mounting /dev/nftla on / failed: Device or resource busy''
>
>Учесть что нет временной директории и диска в оперативке.
>Никаких временных файлов после работы скрипта оставаться не должно, или
>они должны быть удалены до перезагрузки.
>
>Ваши советы...может "/tmp/script && cd / && rmdir /tmp && траляля" ? ну или в этом духе.
// wbr
>>subj: самоудаляющийся shell script (/bin/ash)?
>>Подкажите пример скрипта который будет сам себя удалять.
>
>может "/tmp/script && cd / && rmdir /tmp && траляля" ? ну
>или в этом духе.
>
>// wbrДело в том что скрипт запускается послеперезагрузки системы из файла
/etc/inittab
там первоя строка
::sysinit:/my_temp_dir/srcipt.sh <параметры_скрипта>Причем в результате работы скрипта, файл /etc/inittab переписывается
ранее сохраненным оригинальным файлом.
Похоже что && в /etc/inittab не работает.Может какие еще предположения.
А то второй день в нете роюсь ничего дельного.
>>>subj: самоудаляющийся shell script (/bin/ash)?
>>>Подкажите пример скрипта который будет сам себя удалять.
>>
>>может "/tmp/script && cd / && rmdir /tmp && траляля" ? ну
>>или в этом духе.
>>
>>// wbr
>
>Дело в том что скрипт запускается послеперезагрузки системы из файла
>/etc/inittab
>там первоя строка
>::sysinit:/my_temp_dir/srcipt.sh <параметры_скрипта>
>
>Причем в результате работы скрипта, файл /etc/inittab переписывается
>ранее сохраненным оригинальным файлом.
>Похоже что && в /etc/inittab не работает.
>
>Может какие еще предположения.
>А то второй день в нете роюсь ничего дельного.я делал так: вместе со скриптом стартовал простенький демон на c (пример есть на этом сайте в архивах), который после получения от этого же скрипта SIGXXX, вычищал неоходимое пространство,собственный бинарник и умирал сам :)
>>>>subj: самоудаляющийся shell script (/bin/ash)?
>>>>Подкажите пример скрипта который будет сам себя удалять.
>>>
>>>может "/tmp/script && cd / && rmdir /tmp && траляля" ? ну
>>>или в этом духе.
>>>
>>>// wbr
>>
>>Дело в том что скрипт запускается послеперезагрузки системы из файла
>>/etc/inittab
>>там первоя строка
>>::sysinit:/my_temp_dir/srcipt.sh <параметры_скрипта>
>>
>>Причем в результате работы скрипта, файл /etc/inittab переписывается
>>ранее сохраненным оригинальным файлом.
>>Похоже что && в /etc/inittab не работает.
>>
>>Может какие еще предположения.
>>А то второй день в нете роюсь ничего дельного.
>
>я делал так: вместе со скриптом стартовал простенький демон на c (пример
> есть на этом сайте в архивах), который после получения от
>этого же скрипта SIGXXX, вычищал неоходимое пространство,собственный бинарник и умирал сам
>:)Решение хорошее, но для меня неудобно.
Бинарник демона придется компилить через кросс среду. И к тому же получится аппаратно-зависимое решение.Я все-таки создал tmpfs туда пихаю скрипт последних действий, вызываю его (exec - производит выход из текуцщего скрипта, а значит шелл его отпускает). а об очистке tmpfs не волнуюсь - все делает reboot.
Тему оставляю открытой! Может есть еще оригинальные решения?
>>>>>subj: самоудаляющийся shell script (/bin/ash)?
>>>>>Подкажите пример скрипта который будет сам себя удалять.
>>>>
>>>>может "/tmp/script && cd / && rmdir /tmp && траляля" ? ну
>>>>или в этом духе.
>>>>
>>>>// wbr
>>>
>>>Дело в том что скрипт запускается послеперезагрузки системы из файла
>>>/etc/inittab
>>>там первоя строка
>>>::sysinit:/my_temp_dir/srcipt.sh <параметры_скрипта>
>>>
>>>Причем в результате работы скрипта, файл /etc/inittab переписывается
>>>ранее сохраненным оригинальным файлом.
>>>Похоже что && в /etc/inittab не работает.
>>>
>>>Может какие еще предположения.
>>>А то второй день в нете роюсь ничего дельного.
>>
>>я делал так: вместе со скриптом стартовал простенький демон на c (пример
>> есть на этом сайте в архивах), который после получения от
>>этого же скрипта SIGXXX, вычищал неоходимое пространство,собственный бинарник и умирал сам
>>:)
>
>Решение хорошее, но для меня неудобно.
>Бинарник демона придется компилить через кросс среду. И к тому же получится
>аппаратно-зависимое решение.
>
>Я все-таки создал tmpfs туда пихаю скрипт последних действий, вызываю его (exec
>- производит выход из текуцщего скрипта, а значит шелл его отпускает).
>а об очистке tmpfs не волнуюсь - все делает reboot.
>
>Тему оставляю открытой! Может есть еще оригинальные решения?Kak nas4et:
#!/bin/sh
echo test
rm -f $0
exit 0Pravda ja ne testiroval do konca vse, a posemu ne znaju posledstvij (esli takovije imejutca). Shell ja dumaju razli4ija osobogo ne sigrajet.
>>>>>>subj: самоудаляющийся shell script (/bin/ash)?
>>>>>>Подкажите пример скрипта который будет сам себя удалять.
>>>>>
>>>>>может "/tmp/script && cd / && rmdir /tmp && траляля" ? ну
>>>>>или в этом духе.
>>>>>
>>>>>// wbr
>>>>
>>>>Дело в том что скрипт запускается послеперезагрузки системы из файла
>>>>/etc/inittab
>>>>там первоя строка
>>>>::sysinit:/my_temp_dir/srcipt.sh <параметры_скрипта>
>>>>
>>>>Причем в результате работы скрипта, файл /etc/inittab переписывается
>>>>ранее сохраненным оригинальным файлом.
>>>>Похоже что && в /etc/inittab не работает.
>>>>
>>>>Может какие еще предположения.
>>>>А то второй день в нете роюсь ничего дельного.
>>>
>>>я делал так: вместе со скриптом стартовал простенький демон на c (пример
>>> есть на этом сайте в архивах), который после получения от
>>>этого же скрипта SIGXXX, вычищал неоходимое пространство,собственный бинарник и умирал сам
>>>:)
>>
>>Решение хорошее, но для меня неудобно.
>>Бинарник демона придется компилить через кросс среду. И к тому же получится
>>аппаратно-зависимое решение.
>>
>>Я все-таки создал tmpfs туда пихаю скрипт последних действий, вызываю его (exec
>>- производит выход из текуцщего скрипта, а значит шелл его отпускает).
>>а об очистке tmpfs не волнуюсь - все делает reboot.
>>
>>Тему оставляю открытой! Может есть еще оригинальные решения?
>
>Kak nas4et:
>#!/bin/sh
> echo test
> rm -f $0
>exit 0
>
>Pravda ja ne testiroval do konca vse, a posemu ne znaju posledstvij
>(esli takovije imejutca). Shell ja dumaju razli4ija osobogo ne sigrajet.Не пойдет.
Не размонтируется смотри так:>#!/bin/sh
> echo test
> rm -f $0
mount -t minix -o remount,ro /dev/nftla /
>exit 0
>subj: самоудаляющийся shell script (/bin/ash)?
>Подкажите пример скрипта который будет сам себя удалять.
>Подробнее:
>
>есть временная директория ``/my_temp_dir''
>есть скрипт ``/my_temp_dir/srcipt.sh''
>в скрипте выполняются некоторые полезные команды,
>после этого должна быть удалена полностью директория ``/my_temp_dir''
>( rm -rf /my_temp_dir )
>затем ( sync )
>затем ( mount -o remount,ro /dev/nftla / )
>затем ( reboot )
>
>сложности:
>если делать удаление как написано, то маунт ругается
>``mount: Mounting /dev/nftla on / failed: Device or resource busy''
>
>Учесть что нет временной директории и диска в оперативке.
>Никаких временных файлов после работы скрипта оставаться не должно, или
>они должны быть удалены до перезагрузки.
>
>Ваши советы...в вашем случае ДО ОПЕРАЦИЙ по удалению всего-чего-можно
надо сменить текщий каталог ;-)
cd ..
нельзя отмонтировать каталог в котором кто-то работает, его (каталог) перед размонтированием должны все покинуть ;-))
именно из-за этого Вы например Ваш скрипт выдаст ту-же ошибку,
если Вы запустите его из текщего каталога :
cd temp_dir ; ./script.sh
всё просто - ошибку размонтирования вызвали именно Вы - текущий катfлог в сессии остался в temp_dir ;[
правильно будет запускать Ваш скрипт из другого каталога :
temp_dir/script.sh
вот так уже должно работать ;-))
кратко :
в скрипт перед размонтированием добавить cd /
сам скрипт запускать, находясь в другом каталоге(что-то моё пред. сообщение криво как-то получилось ;-)
>кратко :
>в скрипт перед размонтированием добавить cd /
>сам скрипт запускать, находясь в другом каталоге
>
>(что-то моё пред. сообщение криво как-то получилось ;-)Уточню!
Перемонтирую я как раз рутовую директорию! (другими словами ``/'')
У меня есть ``/var'' на romfsВ том эксперименте, что я 2 мин. назад описал. Делалось следующее.
скрипт
#!/bin/sh
# file name = /mnt/nfs/t.shecho start
cd /var
rm $0
echo -n ro..
mount -o remount,ro /dev/nftla /
echo OK
echo -n rw..
mount -o remount,ro /dev/nftla /
echo OK
echo endexit 0
делаю по шагам
# cd /var
# cp /mnt/nfs/t.sh /
# /t.shполучаю:# /t.sh
start
ro..mount: Mounting /dev/nftla on / failed: Device or resource busy
OK
rw..mount: Mounting /dev/nftla on / failed: Device or resource busy
OK
end
>>subj: самоудаляющийся shell script (/bin/ash)?>
>в вашем случае ДО ОПЕРАЦИЙ по удалению всего-чего-можно
>надо сменить текщий каталог ;-)
>cd ..
>нельзя отмонтировать каталог в котором кто-то работает, его (каталог) перед размонтированием должны
>все покинуть ;-))
>именно из-за этого Вы например Ваш скрипт выдаст ту-же ошибку,
>если Вы запустите его из текщего каталога :
>cd temp_dir ; ./script.sh
>всё просто - ошибку размонтирования вызвали именно Вы - текущий катfлог в
>сессии остался в temp_dir ;[
>правильно будет запускать Ваш скрипт из другого каталога :
>temp_dir/script.sh
>вот так уже должно работать ;-))Нет! Дело не в этом.
Только что проверил. От каталога в котором ты находишься не зависит.
Влияет на корректное перемонтирование только наличие команды
rm $0
если она есть то
mount: Mounting /dev/nftla on / failed: Device or resource busyесли ее нет то все проходит без ошибок.
может umount -f
>может umount -fСиловой метод?! Но ладно попробуем...
Для теста скрипт
скрипт
#!/bin/sh
# file name = /mnt/nfs/t.sh
echo start
rm $0
echo -n ro..
mount -f -o remount,ro /dev/nftla /
echo OK
echo -n rw..
mount -f -o remount,ro /dev/nftla /
echo OK
echo end
exit 0Ну че, поехали
# cd /
# cp /mnt/nfs/t.sh /
# ./t.shstart
ro..OK
rw..OK
endУра!!! Работает!???... или...
# fsck.minix -v /dev/nftla
Inode 1 (mode = 0040755), i_nlinks=12, counted=11.
Inode 209 not used, marked used in the bitmap.
Inode 210 not used, marked used in the bitmap.
Inode 212 not used, marked used in the bitmap.
Zone 6490: marked in use, no file uses it.
Zone 6491: marked in use, no file uses it.
Zone 6492: marked in use, no file uses it.
...
...Конечно fsck все поправит, а хотя кто знает...
Ан нет. Силой нельзя.