Executar comando apenas uma vez.

Fórum para discussão sobre Linux para processadores ARM

Moderadores: 51, guest2003, Renie, gpenga

Executar comando apenas uma vez.

Mensagempor fabim » 10 Jun 2021 12:39

Boa tarde pessoal!

Estou terminando um processo, e em meio a um mar de problemas, apareceu um que está me deixando de cabelo em pé por não encontrar nada na net.
Por este motivo, busco auxilio do pessoal que domina o assunto, com excelência!

Exite alguma forma de executar um comando apenas uma única vez, e não mais, em um arquivo qualquer?

Minha necessidade, é a seguinte!

Após gravar a ISO de 1.43GB em um cartão de 16GB, preciso executar a expansão de filesystem, as in: https://linux.die.net/man/8/resize2fs

no meu caso, : su - pi resize2fs /dev/sdb ....

Feito isso logo após espetar o cartão a primeira vez, necessito que esse comando não más seja executado!

Eu vi isso certa vez, que existe um arquivo que o faz, porém, não me recordo mesmo me matando!!!

Muito obrigado!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Executar comando apenas uma vez.

Mensagempor edsont » 10 Jun 2021 21:57

Eu não entendo de Linux e não sei como será executado este comando, mas se for parecido com os .bat do DOS, e der para fazer execução condicional eu verificaria se existe um arquivo qualquer. Se não existir exeuta o comando e em seguida cria o arquivo (pode copiar de outro também). Na próxima vez o arquivo existirá e não será executado.
O contrário também funciona. Deixa um arquivo que habilita o comando e depois de executado apaga este arquivo.
Avatar do usuário
edsont
Word
 
Mensagens: 555
Registrado em: 22 Mai 2007 17:19
Localização: Araraquara-SP Brasil - Terra - Sistema Solar - Via Láctea

Re: Executar comando apenas uma vez.

Mensagempor mrgadotti » 11 Jun 2021 09:05

Uma maneira bem simples, o script verifica se existe um arquivo, se ele existir, executa o comando e deleta o arquivo.

Por exemplo, deixar um arquivo /etc/firstrun, o script verifica se o arquivo existe e roda o que for necessário e se a execução tiver sucesso, apaga o firstrun. No próximo boot ele não vai executar o comando. Eu fazia algo parecido em um gateway Linux durante o processo de atualização, tinha que executar alguns comandos de migração no primeiro boot e não podia sair mexendo em alguns scripts sem quebrar nada...
Avatar do usuário
mrgadotti
Byte
 
Mensagens: 421
Registrado em: 02 Jun 2010 21:14
Localização: Timbó - SC

Re: Executar comando apenas uma vez.

Mensagempor fabim » 11 Jun 2021 13:22

hmmmm, hmmmmmmmmmmmm,
Vou tentar viabilizando!

A dúvida, é a seguinte, ;;;

Tenho total certeza de ter lido em algum lugar, que existe um arquivo no sistema, que quando é necessário fazer algo durante o próximo boot;
O sistema adiciona lá o comando, ou comandos, no próximo boot serão executados, e apagados ao final da execução.

Mas não tenho a menor noção de onde vi isso, e qual arquivo - especificamente, é!

Obrigado, assim que resolver irei postar aqui como foi feito!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: Executar comando apenas uma vez.

Mensagempor edsont » 11 Jun 2021 14:15

Pesquisando rapidamente achei este exemplo, mas basicamente ele move o script para outro diretório após executado.

https://github.com/mkijowski/linux-runonce
Avatar do usuário
edsont
Word
 
Mensagens: 555
Registrado em: 22 Mai 2007 17:19
Localização: Araraquara-SP Brasil - Terra - Sistema Solar - Via Láctea

Re: Executar comando apenas uma vez.

Mensagempor fabim » 18 Jun 2021 12:26

O dito summary, diz o seguinte:
O Linux, puxa o script do disco físico - para a memória ram, ou seja, o link com o script estático foi quebrado.
A mindset que, se apagar o arquivo estático, irá parar de funcionar não faz sentido!
Tudo que é executado, sempre é pego todo o conteúdo do arquivo, feito um alinhamento, e posto em memória dinâmica.
Se na memória ram, já rodando o script, você apagar o arquivo no início do script, meio ou fim, whatever!



Eu, depois de muitos anos, consegui entender todo o processo em apenas um blog!

Existe, logicamente, outros processos onde um aplicativo, por si só é responsável por pegar o necessário em estático, e passar para dinâmico.
Porém, esse inicial, SEMPRE vai estar na memória RAM.


Valeu pessoal, muito agradecido novamente pela força de todos!


The script can delete itself via the shred command (as a secure deletion) when it exits.

Código: Selecionar todos
#!/bin/bash

currentscript="$0"

# Function that is called when the script exits:
function finish {
    echo "Securely shredding ${currentscript}"; shred -u ${currentscript};
}

# Do your bashing here...

# When your script is finished, exit with a call to the function, "finish":
trap finish EXIT

Share
Follow
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?


Voltar para Linux / uCLinux ( ARM ) / UNIX

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes

x