Если вы добавите опцию загрузки console=tty1
, вывод systemd должен сохраняться на tty1.
Тем не менее, я думаю, что systemd.show _status=false ближе к тому, что вы просили.
console=tty1
также будет хранить сообщения ядра на tty1.[ *] Таким образом, вы можете пропустить полезные предупреждения или сообщения об ошибках. Если ядро полностью выйдет из строя, оно может записать очень полезную информацию на tty1, но вы не сможете переключиться обратно, чтобы увидеть ее. (Справедливости ради, у вас может возникнуть та же проблема при использовании графического интерфейса ).
[ *] Linux :Разница между /dev/console, /dev/tty и /dev/tty0
[это предполагает, что вы хотите, чтобы вывод time
также направлялся в log.txt
, что неясно из вашего вопроса]
Просто не используйте nohup
.
nohup
не делает ничего особенного, кроме игнорирования сигнала SIGHUP
, перенаправляя stdout и stderr в файл и --только в некоторых вариантах, например nohup
из GNU coreutils --, перенаправляя стандартный ввод из /dev/null
, открытого в запись -только режим .
Все это можно легко сделать из оболочки:
{ trap '' HUP; time bash -x your_script args... ; } > log.txt 2>&1 0>/dev/null &
Или безопаснее, если запускать из сценария или если вы не планируете когда-либо возвращать команду на передний план с помощьюfg
:
(trap '' HUP; time bash -x your_script args... 0>/dev/null &) > log.txt 2>&1
(Вы можете опустить 0>/dev/null
, если не хотите эмулировать эту особенность GNU nohup ).
Конечно, вы можете использовать синтаксический трюк из первого примера и с nohup, если по какой-то непостижимой причине вы приписываете nohup магические свойства:
{ time nohup bash -x your_script args... ; } > log.txt 2>&1 &
Можно просто использовать:
time yourscript.sh
Но если это не работает для вас, вы можете обернуть содержимое скрипта, например:
STARTTIME=$(date +%s)
#command block that takes time to complete...
ENDTIME=$(date +%s)
echo "It takes $($ENDTIME - $STARTTIME) seconds to complete this task..."
Просто time
процесс nohup
:
$ time nohup bash -x ~/scripts/foo.sh
nohup: ignoring input and appending output to 'nohup.out'
real 0m10.011s
user 0m0.005s
sys 0m0.006s
foo.sh
просто имеет sleep 10
в качестве примера.