Если вы хотите знать размер устройства (в байтах), вы можете использовать blockdev:
# blockdev --getsize64 /dev/sde
2000398934016
В этом примере /dev/sde
- это 2TB диск, или, по крайней мере, это то, что видит ядро. Естественно, fdisk
, parted
и другие должны показывать одну и ту же информацию.
Этот размер не изменяется. Потеря мощностей из-за плохих секторов не является вариантом, это не приведет к прекращению проблем; перераспределение секторов использует внутренний резерв, и привод, как правило, полностью мертв до того, как он израсходован. Вы должны заменить, прежде чем все станет так плохо.
Некоторые люди любят оставлять небольшое несмежное пространство (несколько мег) в конце диска, так как сменный диск может не иметь точно такого же размера, как ваш старый, и может усложнить такие вещи, как raid члена замены, если новое устройство кажется немного слишком маленьким.
-121--123264- Я выполнил пробег
в запущенном экземпляре bash
. Затем я вызвал команду exec sleep 100
. Теперь посмотрите, что происходит:
access("/bin/sleep", X_OK) = 0
...
execve("/bin/sleep", ["sleep", "100"], [/* 14 vars */]) = 0
...
nanosleep({100, 0},
...
exit_group(0) = ?
Таким образом, вы можете видеть, что происходит почти так же, как когда вы называете сон
обычным способом. bash
проверяет, предоставлено ли исполняемое разрешение ( X _ OK
) для /bin/sleep
с помощью системного вызова access ()
. Затем execve ()
выполняет программу, на которую указывает имя файла. После execve ()
syscall sleep
управляет процессом. Делает это вещи: nanosleep ()
. Он также копает ту же самую pid. После завершения сна
процесс также завершается. Не выполняется ли режим sleep
или bash
.
Доказательство:
В другом окне я наблюдал за процессом с помощью ps
. Перед выполнением команды она выглядела следующим образом:
$ ps -o stat,pid,cmd -p <pid>
Ss+ 10905 -bash
Во время выполнения
$ ps -o stat,pid,cmd -p <pid>
Ss+ 10905 sleep 100
Afer sleep
завершил процесс.
Что происходит при обычном запуске?
access("/bin/sleep", X_OK) = 0
...
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f6c9fd089d0) = 19261
...
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WSTOPPED|WCONTINUED, NULL) = 19261
...
--- SIGCHLD (Child exited) @ 0 (0) ---
Проверяется разрешение на выполнение. Затем создается дочерний процесс clone ()
. Экземпляр bash
теперь находится в фоновой группе процессов, sleep
- в основной группе процессов. Наконец, вызов wait4 ()
ожидает завершения дочернего процесса (что требует 100 секунд).
Сделать просто для удобства. Без него можно строить программное обеспечение, просто сложнее.
Когда вы запускаете make
для создания чего-либо, он показывает вам команды, которые он выполняет. Эти команды можно выполнить вручную и получить тот же эффект.
$ echo "int main() {}" > test.c
$ make test
cc test.c -o test
Который создал файл с именем test
.
Я могу получить тот же результат, просто сделав:
cc test.c -o test
Если make не существует, вы можете либо поручить пользователям выполнить эту команду cc
вручную, либо вы можете распространить сценарий оболочки, и дать им указание запустить сценарий.
Запустить SU -L $ username
через терминал, чтобы войти в систему в качестве другого пользователя, не теряя текущего стиля подсказки.
Лучшая идея может быть использована Sudo
вместо SU
. Оперативное изменение важно, потому что он напоминает вам, что у вас возвышены привилегии и могут легко случайно сломать что-то, поэтому вы должны быть осторожны.