Eu sou novo em scripts ... posso fazer coisas muito básicas, mas agora preciso de uma mão.
Eu tenho um sistema de arquivos local que só será montado quando eu precisar fazer um backup.
Estou começando com isso.
#!/bin/bash
export MOUNT=/myfilesystem
if grep -qs $MOUNT /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."; then
mount $MOUNT;
fi
Como eu disse, sou muito básico em scripts. Ouvi dizer que você pode verificar o status do mount
comando observando os códigos de retorno.
RETURN CODES
mount has the following return codes (the bits can be ORed):
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
Eu não sei como verificar isso. Alguma orientação?
bash
shell-script
mount
maniat1k
fonte
fonte
; then
em seu script.Respostas:
Você pode verificar o código de status
mount
e os executáveis mais bem escritos, com o parâmetro especial shell?
.De
man bash
:? Expands to the exit status of the most recently executed foreground pipeline.
Depois de executar o
mount
comando, a execução imediataecho $?
imprimirá o código de status do comando anterior.Nem todos os executáveis possuem códigos de status bem definidos. No mínimo, ele deve sair com um código de sucesso (0) ou falha (1), mas nem sempre é esse o caso.
Para expandir (e corrigir) seu script de exemplo, adicionei uma
if
construção aninhada para maior clareza. Não é a única maneira de testar o código de status e executar uma ação, mas é a mais fácil de ler ao aprender.Para obter mais informações sobre "Status de saída e saída", consulte o Guia avançado de script de festança .
fonte
$MOUNT
. Este script também será interrompido se o sistema de arquivos tiver algum caractere que sofreria separação de palavras (espaços, etc.). Você deve sempre citar suas expansões.Muitas distribuições Linux têm o
mountpoint
comando. Ele pode ser usado explicitamente para verificar se um diretório é um ponto de montagem. Simples assim:fonte
Mais uma maneira:
fonte
findmnt
deve ser fornecido com o parâmetro--source encfs
, caso contrário, ele sempre considerará o diretório a ser montado porque ele retorna à montagem pai.A maneira mais fácil que não requer root é:
ou para ver se não está montado:
fonte
mount
comando não precisa de acesso root,df
concentra-se no espaço em disco e não nos pontos de montagem ...Declarações breves
Verifique se montado :
Verifica se não está montado :
fonte
Eu tentei com o script abaixo
A única entrada que você precisa fornecer é o nome do sistema de arquivos
fonte