Как использовать команду Sleep в Linux для приостановки сценария Bash

Я пытаюсь создать простой скрипт, который откроет новый терминал с новым именем и закроет старый терминал, откуда скрипт был запущен.

Перечень встроенных ограничений rbash

Ограниченный командный интерпретатор rbash ведет себя аналогично bash, но следующие действия не разрешены или не выполняются:

  • запрещена смена текущего каталога командой cd
  • запрещено изменять переменные окружения PATH, SHELL, ENV, BASH_ENV
  • запрещен доступ к переменной SHELLOPTS
  • запрещено перенаправление вывода
  • запрещен вызов утилит, в названии которых присутствует хотя бы один символ «слэш» (/)
  • запрещен вызов команды exec для запуска другого процесса
  • запрещен ряд других команд, которые могут использовать сценарий для выполнения непредусмотренных действий
  • запрещен выход из ограниченного режима

Ограничения начинают действовать сразу после чтения файлов начального запуска. При выполнении команды, которая оказалась сценарием командного интерпретатора, rbash отключает любые ограничения в порожденном командном интерпретаторе для выполнения этого сценария. Подробнее здесь.

Первая строка в любой программе BASH

Второе, что нужно сразу запомнить, это то, что первая строка в любой программе, написанной на BASH должна указывать на интерпретатор этого языка. И выглядит это обычно так:

#!/bin/bash

Первый символ #, второй символ — !. Сразу за ними (без каких-либо пробелов) путь до интерпретатора: /bin/bash. И сразу после него перенос строки. Снова никаких пробелов.

Это всё важно. Иначе могут возникать ошибки, которые при первом взгляде не выявить: пробельные символы не видны, а кто может догадаться о том, что кто-то по доброте душевной решил не экономить и наставить лишних символов там, где не надо? 😉

Сочетание #! называется Shebang. В Линукс, если файл начинается с этих символов, это даёт команду операционной системе проследовать по идущему за ним пути по которому должна находиться программа или интерпретатор для запуска сценария, следующего за этой строкой.

SSH: Запуск Bash Скрипта

Также бывает ситуация, когда на Linux сервере лежит какой-либо скрипт и его необходимо запустить по SSH на другом Linux сервере.

Основная идея заключается в том, чтобы подключиться на удаленный Linux сервер, дать скрипту выполнить свою работу и получить результат, при этом не копируя сам скрипт на удаленный сервер.

Эта задаче безусловно может быть выполнена и при этом довольно просто.

ssh [email protected] ‘bash -s’ <

Что если вы хотите выполнить сценарий с аргументом.

ssh [email protected] ‘bash -s’ < —argument

или

ssh [email protected] ‘bash -s’ < » —argument»

Если требуются привилегии sudo, то команда примет вид:

ssh [email protected] ‘echo «passwords» | sudo -Sv && bash -s’ <

  • password — пароль для пользователя root на удаленной машине.
  • — файл с вашим скриптом расположенный на станции с которой производите подключение.

Если есть вопросы, то пишем в комментариях.

Также можете помочь проекту, заранее всем СПАСИБО!!!.

Пожертвовать RSS

  • Proxmox. Где лежат образы виртуальных машин?
  • Защищено: NAT в Ubuntu
  • Работа с iptables в Linux
  • NextCloud. Сброс пароля Администратора.
  • Установка и настройка ClamAV в Ubuntu/Debian
Читайте также:  Какой дистрибутив лучше — Ubuntu или CentOS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Заключение, несколько советов

Мы рассмотрели основные команды Linux с примерами, надеемся, что они окажутся вам полезными. Напоследок приведем несколько советов по использованию терминала одной строкой.

Двойной символ & (амперсанд)

Предназначен для выполнения нескольких команд последовательно:

команда1 && команда2 && команда3

Вертикальная черта | (pipe)

Вводит результат первой команды в последующую. Например, следующая команда добавит таблицу процессов к команде поиска:

ps axu | grep имя_процесса

Стрелки вверх и вниз на клавиатуре

Помогают осуществлять навигацию по последним командам. Стрелка вверх — предыдущая выполненная команда, стрелка вниз — следующая.

history — история

Если вы забыли, как вы выполнили действие пять дней назад, а вот оно снова потребовалось, выполните history, и терминал выведет на экран последнюю тысячу команд.

Новая вкладка bash

Не всегда удобно иметь несколько окон. Терминал, как браузер, дает возможность открыть несколько вкладок сочетанием клавиш Ctrl+Shift+T.

Копирование и вставка, прерывание команды

Пробовали ли вы копировать текст и вставлять в терминал? Пробовали Ctrl+C? Ctrl+C прервет выполнение текущей команды, например таблицы процессов, сбросит текст, введенный в строку. Скопировать текст из bash — Ctrl+Shift+C. Вставить текст в bash — Ctrl+Shift+V.

BASH Советы по устранению неполадок

BASH может быть немного сложнее по сравнению со специальным языком сценариев. Некоторые из самых больших зависаний в скриптах BASH связаны с неправильным экранированием или не экранированием скриптовых операций, передаваемых в оболочку. Если вы несколько раз просматривали сценарий и он не работает должным образом, не расстраивайтесь. Это характерно даже для тех, кто ежедневно использует BASH для создания сложных сценариев.

Быстрый поиск Google или регистрация на экспертном форуме Linux, чтобы задать вопрос, приведет к быстрому решению. Очень вероятно, что кто-то сталкивался с точной проблемой, и она уже была решена.

Сценарии BASH — это отличный метод быстрого создания мощных сценариев для всего: от автоматизации задач администрирования до создания полезных инструментов. Чтобы стать разработчиком BASH-сценария на уровне экспертов, нужно время и практика. Следовательно, используйте BASH-скрипты всякий раз, когда это возможно, это отличный инструмент для вашей панели инструментов администрирования CentOS.