1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-llthw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex9.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 03:02 8398775

Упражнение 9: Bash: управление задачами, jobs, fg

Linux — это многозадачная операционная система. Это означает, что одновременно может работать несколько программ. С точки зрения пользователя это означает, что вы можете запускать несколько программ одновременно, и bash, безусловно, имеет инструменты для управления выполнением нескольких задач. Чтобы использовать эту функцию, вам необходимо изучить следующие команды:

  • <CTRL> + z — приостанавливает выполнение текущей программы и отправляет её в фоновый режим.
  • jobs — выводит список всех фоновых программ.
  • fg — возвращает программу на передний план. Команда fg принимает число в качестве аргумента, которое можно получить из списка jobs, или, если аргумент не указан, она возвращает последнюю приостановленную программу на передний план.
  • <Ctrl> + c — немедленно останавливает выполнение текущей запущенной программы. Хотя я не буду использовать его в этом упражнении, я должен сказать, что он может быть очень полезным.

Теперь вы узнаете, как использовать встроенные инструменты bash для управления выполнением программ.

Как это сделать:

  1. less -S .profile
  2. <CTRL+z>
  3. less -S .bashrc
  4. <CTRL+z>
  5. less -S .bash_history
  6. <CTRL+z>
  7. jobs
  8. fg
  9. q
  10. fg
  11. q
  12. fg
  13. q
  14. fg
  15. jobs

Что вы увидите:

user1@vm1:~$ less -S .profile
# exists.
# see /usr/share/doc/bash/examples/startup-files for
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setti
# for ssh logins, install and configure the libpam-um
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"

[1]+  Stopped                 less -S .profile
user1@vm1:~$ less -S .bashrc
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines in the history. See bash(
# don't overwrite GNU Midnight Commander's setting of
HISTCONTROL=$HISTCONTROL${HISTCONTROL+:}ignoredups
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

[2]+  Stopped                 less -S .bashrc
user1@vm1:~$ less -S .bash_history
echo Hello, $LOGNAME!
echo 'echo Hello, $LOGNAME!' >> .profile
cp .profile .profile.bak
tail .profile
ls -altr
history -w
ls -al
cat .profile
echo Hello, $LOGNAME!
echo 'echo Hello, $LOGNAME!' >> .profile
cp .profile .profile.bak
tail .profile
ls -altr

[3]+  Stopped                 less -S .bash_history
user1@vm1:~$ jobs
[1]   Stopped                 less -S .profile
[2]-  Stopped                 less -S .bashrc
[3]+  Stopped                 less -S .bash_history
user1@vm1:~$ fg
user1@vm1:~$ fg
user1@vm1:~$ fg
user1@vm1:~$ fg
-bash: fg: current: no such job
user1@vm1:~$ jobs
user1@vm1:~$

Объяснение:

  1. Откройте .profile, чтобы просмотреть его. Обратите внимание, как я использую параметр -S, чтобы включить опцию -chop-long-lines в less.
  2. Приостановите работу less.
  3. Откройте .bashrc, чтобы просмотреть его.
  4. Приостановите работу less.
  5. Откройте .bash_history, чтобы просмотреть его.
  6. Приостановите работу less.
  7. Выведите список приостановленных программ.
  8. Переключитесь на less.
  9. Завершите работу с ним.
  10. Переключитесь на второй less.
  11. Завершите работу с ним.
  12. Переключитесь на первый less.
  13. Завершите работу с ним.
  14. Попытайтесь переключиться на последнюю программу. Нет никаких программ, но вы делаете это, чтобы убедиться, что их действительно нет.
  15. Выведите список приостановленных программ ещё раз. Это делается для того, чтобы убедиться в отсутствии фоновых задач, увидев пустой вывод при печати jobs.

Дополнительное задание:

Откройте man bash, найдите JOB CONTROL, введите /, JOB CONTROL, <ENTER> и прочитайте его.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-llthw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-llthw-zh.git
oschina-mirror
wizardforcel-llthw-zh
wizardforcel-llthw-zh
master