Mostrando postagens com marcador bash. Mostrar todas as postagens
Mostrando postagens com marcador bash. Mostrar todas as postagens

segunda-feira, dezembro 03, 2007

Converter todas imagens X em Y de um diretório

Intale o imagemagick:
apt-get install imagemagick

Crie o script megaultra-conversor.sh:
pico megaultra-conversor.sh

digite no arquivo, isso:
for arq in *.$1; do convert $arq $(echo $(echo $arq | cut -d. -f1).$2); done;

ou, se quiser converter sempre para RGB, como p. ex. de bmp8bits para bmp24bits:
for arq in *.$1; do convert $arq -depth 8 -type TrueColor $(echo $(echo $arq | cut -d. -f1).$2); done;


Grave, saia e transforme ele em executável:
chmod a+x megaultra-conversor.sh

pronto. basta entrar num diretrório chei de imagens bmp, copiar o script pra lá e mandar ver:
./megaultra-conversor.sh bmp jpg


vai converter todos os .bmp do diretorio em .jpg.

sexta-feira, setembro 07, 2007

Criando e matando um processo em background

Suponha que vc tenha um script que execute um programa e deixa-o em background, o que é muito comum quando se quer deixar um processo rodando eternamente em um servidor.

Para executar o programa, crie um arquivo texto assim:

1 meu_programa &
2 echo "$!" > pid.txt;
Bom, a primeira linha executa o programa chamado "meu_programa" e libera o terminal, indicado pelo caracter "&". Sem esse símbolo, assim que vc fechar o terminal (ou ssh) o processo também morrerá.

A segunda linha é mais interessante: o comando echo irá criar um arquivo chamado "pid.txt" e colocará dentro dele o pid do último processo que foi para o background. Isso é indicado pelos sinais "$!". Assim, temos armazenado qual o pid do processo que executamos na linha 1.

Bom, agora basta criar um segundo script, que irá matar aquele processo específico, caso esteja rodando. Abra um novo arquivo em um editor de texto e ponha isso:
1 if [ -f pid.txt ]; then
2 echo Matando processo com PID $(cat pid.txt)...
3 kill $(cat pid.txt)
4 rm pid.txt
5 fi
A linha 1 verifica se o arquivo "pid.txt" existe. Caso isso ocorra, significa que o processo deve estar rodando. O comando "$(cat pid.txt)" irá ler o conteúdo do arquivo, pelo comando cat. O resultado, que é o número do processo, é enviado para o "comando de fora", o kill, que irá encerrar o processo. Por fim, o rm apaga o arquivo, já que o processo foi encerrado.

É isso.