Команда запуска bash в фоновом режиме

Android основан на ядре Linux, включает в себя набор стандартных UNIX-команд и простой шелл sh. Все это значит, что мы можем не только использовать командную строку для выполнения низкоуровневых операций, но и писать шелл-скрипты, которые будут выполнять функции, недоступные из графического интерфейса. В этой статье мы поговорим о том, что с их помощью можно сделать и зачем все это нужно.

Команды консоли Ubuntu

В Ubuntu команды используются для выполнения разных задач. Посмотреть список всех команд и дополнительную информацию вы можете в документации Ubuntu.

Мы рассмотрим основные команды терминала Ubuntu, с которыми сталкивается каждый пользователь:

Команда ls

Отображает список всех файлов и папок в той директории, в которой вы находитесь.

Команда cd

Переходит в другую указанную директорию или папку.

Команда cp

Копирует файлы и папки в любое место файловой системы.

Команда mv

Перемещает файлы и папки в любое место файловой системы.

Команда rm

Удаляет файлы и папки.

Команда mkdir

Создаёт новую пустую директорию.

Команда cat

Отображает содержимое файла в консоли.

Команда nano и команда vim

Открывают текстовые редакторы nano и vim, в которых можно редактировать файл прямо в консоли.

Первый пример

Теперь давайте попробуем написать первый скрипт. Делать это лучше на компе, а еще лучше в Linux или редакторе, который умеет создавать текстовые файлы без символа возврата каретки (который при открытии в Android будет выглядеть как ^M в конце каждой строки). Наш первый скрипт будет состоять всего из двух строк, которые делают бэкап всех установленных приложений на карту памяти. Его код (требует BusyBox):

Читайте также:  Команда last в Linux

#!/system/bin/sh mkdir /sdcard/backup cp /data/app/*.apk /sdcard/backup

Сохраняем (пусть он называется apk_) и перекидываем на смартфон с помощью ADB:

$ adb push apk_ /sdcard/

Теперь его нужно запустить. Проще всего сделать это с помощью все того же ADB:

$ adb shell sh /sdcard/apk_

Примерно таким же образом скрипт можно запустить из консоли на самом смартфоне/планшете:

$ sh /sdcard/apk_

Само собой, такой способ не очень удобен. Поэтому нам нужен какой-то быстрый способ запуска скрипта. Наиболее удобное из найденных мной решений — это приложение QuickTerminal. Устанавливаем, запускаем, переходим на вкладку Quick Command, нажимаем кнопку «+», вбиваем имя (произвольное) и команду (sh /sdcard/apk_), в поле Output Type выбираем либо Dialog Output, либо Nothing. В первом случае во время выполнения скрипта на экране появится окно с результатом, во втором все пройдет в фоне. Кому что удобнее. Далее сохраняем и получаем кнопку, с помощью которой скрипт можно будет запустить быстро и легко.

Теперь напишем скрипт, который восстановит наш бэкап:

Первый пример

#!/system/bin/sh for i in /sdcard/backup/*; do pm install -t -r $i done

В нем мы задействовали команду pm с опцией install и флагами -t и -r, которые заставляют систему устанавливать приложения, даже если они подписаны тестовым ключом или уже установлены. Также можно использовать флаг -s, который принуждает приложения к установке на карту памяти (если такая возможность есть), или -f — установка во внутреннюю память устройства.

Почти все команды Android имеют подробную справку

Имея рут, можно даже сделать бэкап настроек всех приложений с помощью копирования и архивации каталога /data/data/, однако восстановить его будет очень проблематично, так как в Android каждое приложение исполняется от имени созданного специально для него Linux-юзера и хранит настройки внутри каталога, принадлежащего этому пользователю. Проблема здесь в том, что идентификатор Linux-юзера для каждого приложения генерируется динамически, поэтому после восстановления бэкапа в заново установленной системе идентификаторы не будут совпадать и приложения не смогут прочитать свои настройки. Придется вручную выяснять ID юзера для каждого приложения и менять права доступа на каталоги с данными.

Читайте также:  Android против iOS: какая мобильная операционная система лучше?

С другой стороны, мы можем использовать встроенный в Android Backup Manager, позволяющий сторонним приложениям использовать возможности системы для бэкапа и восстановления приложений и их данных. Управлять им можно из консоли (а значит, и с помощью скриптов), но сам по себе он никакого бэкапа не производит, а возлагает эту работу на сторонние приложения. Helium — одно из таких приложений. Если установить и настроить его, операцию бэкапа и восстановления можно будет заскриптовать. Например, следующий простой скрипт сделает резервную копию всех сторонних приложений:

#!/system/bin/sh # Получаем список всех сторонних приложений for i in `pm list packages -e`; do # Добавляем каждое из них в очередь bmgr backup ${i:8} done # Запускаем операцию бэкапа bmgr run

Конструкция ${i:8} здесь нужна, чтобы обрезать слово «packages:», которое pm добавляет в начало имени каждого пакета. Чтобы восстановить бэкап, можно использовать либо тот же Helium, либо команду bmgr:

$ bmgr list sets # Получаем список бэкапов $ bmgr restore <тег> # Восстанавливаем нужный бэкап

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 на удаленной машине.
  • — файл с вашим скриптом расположенный на станции с которой производите подключение.
Читайте также:  3 простых способа сохранить веб-страницу в PDF

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

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

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

  • Установка NextCloud официальным скриптом
  • Proxmox. Где лежат образы виртуальных машин?
  • Защищено: NAT в Ubuntu
  • Работа с iptables в Linux
  • NextCloud. Сброс пароля Администратора.

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

Наиболее полезные команды

Описание

Команда

Покажет все выполняемые задания, а также их идентификаторы.

jobs jobs -l ps aux

Переведет команду или скрипт для работы в приоритетном режиме.

command & /path/to/command & /path/to/script arg1 &

Переведет фоновое задание для работы в приоритетном режиме.

fg n %n

Переведет команду обратно к фоновому режиму, не запрашивая его отмену.

bg n %n &

Под «n» подразумевается идентификационный номер заданий, он выводится при выполнении команды «jobs».

Поделиться Оценить

Средняя оценка: 5.0 Оценили: 1

A05F8E9 г. Алматы ул. Наурызбай Батыра, д. 122 +7 (727) 350-53-42

  • 106 28 ТОО «LINCORE – облачные технологии»A05F8E9 г. Алматы ул. Наурызбай Батыра, д. 122 +7 (727) 350-53-42
  • 106 28 ТОО «LINCORE – облачные технологии»
  • 106 28