Jestem nowy w skryptowaniu ... Potrafię robić bardzo proste rzeczy, ale teraz potrzebuję pomocy.
Mam lokalny system plików, który zostanie zamontowany tylko wtedy, gdy będę musiał wykonać kopię zapasową.
Zaczynam od tego.
#!/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
Jak powiedziałem, jestem bardzo prosty w skryptowaniu. Słyszałem, że możesz sprawdzić status mount
polecenia, patrząc na kody powrotu.
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
Nie wiem jak to sprawdzić. Jakieś wskazówki?
bash
shell-script
mount
maniat1k
źródło
źródło
; then
twoim skrypcie masz zabawne zwisanie .Odpowiedzi:
Możesz sprawdzić kod statusu
mount
i najlepiej napisanych plików wykonywalnych za pomocą specjalnego parametru powłoki?
.Od
man bash
:? Expands to the exit status of the most recently executed foreground pipeline.
Po uruchomieniu
mount
polecenia natychmiastowe wykonanieecho $?
spowoduje wydrukowanie kodu stanu z poprzedniego polecenia.Nie wszystkie pliki wykonywalne mają dobrze zdefiniowane kody stanu. Powinien on co najmniej kończyć się kodem powodzenia (0) lub niepowodzenia (1), ale nie zawsze tak jest.
Aby rozwinąć (i poprawić) przykładowy skrypt, dodałem zagnieżdżoną
if
konstrukcję dla zachowania przejrzystości. To nie jedyny sposób na przetestowanie kodu stanu i wykonanie akcji, ale najłatwiej jest go przeczytać podczas nauki.Aby uzyskać więcej informacji na temat „Exit and Exit Status”, zapoznaj się z Advanced Bash-Scripting Guide .
źródło
$MOUNT
. Ten skrypt również się zepsuje, jeśli system plików ma znak, który podlegałby podziałowi słów (spacje itp.). Należy zawsze podać swój rozwinięć.Wiele dystrybucji Linuksa ma
mountpoint
polecenie. Można go jawnie wykorzystać do sprawdzenia, czy katalog jest punktem podłączenia. Proste jak to:źródło
Jeszcze jeden sposób:
źródło
findmnt
musi być dostarczony z parametrem--source encfs
, w przeciwnym razie zawsze będzie rozważał podłączenie katalogu, ponieważ wraca on do montowania nadrzędnego.Najprostszym sposobem, który nie wymaga rootowania jest:
lub sprawdzić, czy nie jest zamontowany:
źródło
mount
komenda nie potrzebuje dostępu do konta roota,df
koncentruje się na przestrzeni dyskowej nie na punkty montowania ...Krótkie wypowiedzi
Sprawdź, czy zamontowano :
Sprawdź, czy nie jest zamontowany :
źródło
Próbowałem z poniższym skryptem
Jedyne, co musisz podać, to nazwa systemu plików
źródło