Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Python запуск команд linux

Python | Выполнять и анализировать команды Linux

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

Операционная система в основном состоит из двух частей: ядра и оболочки. Ядро в основном управляет связью между программным обеспечением и оборудованием. Оболочка принимает входные данные или команды от пользователя и выдает выходные данные. В настоящее время в большинстве дистрибутивов Linux используется оболочка BASH (оболочка Bourne again). Команды и сценарии оболочки очень мощные и часто используются разработчиками.

В этой статье мы рассмотрим выполнение и анализ команд Linux с использованием python.

Подпроцесс —

Подпроцесс — это модуль в Python, который позволяет нам запускать новые приложения или процессы в Python. Этот модуль предназначен для замены нескольких старых модулей в Python. Мы можем использовать этот модуль для запуска других программ или выполнения команд Linux.

Начиная процесс —

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

Аргументы:

  1. The first parameter is a list that contains the commands and their options if any.
    ex: [‘ls’, ‘-l’]
    the above example is equivalent to typing ‘ls -l’ in the terminal
  2. The second parameter is the stdout value. it specifies the standard output.
    ex: stdout = subprocess.PIPE
    This indicates that a new pipe or redirection should be created. The default value is
    “None”, which means that no redirection will occur.

Мы можем получить выходные данные команды, используя функцию связи . Он читает данные из stdout и stderr, пока не достигнет конца файла, и ожидает завершения процесса. Он возвращает кортеж, который содержит выходные данные и ошибку, если таковые имеются.

Синтаксис:

Выход выполненной команды сохраняется в данных. Используя эти функции, мы можем выполнять команды Linux и получать их вывод.

Список каталогов —

Мы можем использовать команду «ls» с такими параметрами, как «-l», «-al» и т. Д., Чтобы вывести список всех файлов в текущем каталоге. Затем мы можем проанализировать этот вывод и распечатать его в презентабельном формате. Функция get_permissions() анализирует выходные данные команды list и извлекает только имена файлов и их соответствующие разрешения.

# функция для перечисления файлов в
# текущий каталог и
# разбирать вывод.

def list_command(args = ‘-l’ ):

# используя функцию Popen для выполнения

# команда и сохранить результат в темп.

# возвращает кортеж, содержащий

# данные и ошибка, если есть.

temp = subprocess.Popen([cmd, args], stdout = subprocess.PIPE)

# мы используем функцию связи

# чтобы получить вывод

output = str (temp.communicate())

# разделить вывод так, чтобы

# мы можем разобрать их построчно

output = output.split( «n» )

output = output[ 0 ].split( ‘\’ )

# переменная для хранения вывода

for line in output:

for i in range ( 1 , len (res) — 1 ):

# анализировать вывод ls
# команда и получить разрешения
# файлов и хранить их в
# текстовый файл.

res = list_command( ‘-l’ )

# перебрать все строки

# и получить имя файла

# и его разрешение.

for i in range ( 1 , len (res) — 1 ):

folder_name = line[ len (line) — 1 ]

permission_value = line[ 0 ]

# создать каталог с именем

# выходы для хранения выходных файлов

# открыть выходной файл

out = open ( ‘permissions.txt’ , ‘w’ )

out.write( ‘Folder Name Permissionsnn’ )

# запись в выходной файл

for folder in permissions:

out.write(folder + ‘ : ‘ + permissions[folder] + ‘n’ )

if __name__ = = ‘__main__’ :

Выход :

Команда пинга —

Команда ping расшифровывается как Packet Internet Groper. Чаще всего он используется для проверки связи между двумя системами или узлами. Используя команду ping, мы можем проверить работоспособность соединения между одним узлом или другим. Он обменивается пакетами данных между двумя узлами, а также рассчитывает время прохождения туда-обратно.

# функция для проверки связи с данным хостом

# команда это понг

# отправить два пакета данных на хост

# это указано ‘-c 2’ в

temp = subprocess.Popen([cmd, ‘-c 2’ , host], stdout = subprocess.PIPE)

# получить вывод команды ping

output = str (temp.communicate())

output = output.split( «n» )

output = output[ 0 ].split( ‘\’ )

# переменная для хранения результата

for line in output:

print ( ‘ping results: ‘ )

print ( ‘n’ .join(res[ len (res) — 3 : len (res) — 1 ]))

if __name__ = = ‘__main__’ :

Выход :

Изменение разрешений —

Команда chmod может использоваться для изменения прав доступа к файлу. Это сокращение от режима изменения. Более подробную информацию можно найти здесь

# функция для изменения разрешений
# данного файла

def change_permissions(args, filename):

# файл перед chmod

data = subprocess.Popen([ls, ‘-l’ , filename], stdout = subprocess.PIPE)

output = str (data.communicate())

print ( ‘file permissions before chmod % s: ‘ % (args))

# выполнение chmod для указанного файла

temp = subprocess.Popen([cmd, args, filename], stdout = subprocess.PIPE)

# файл после chmod

data = subprocess.Popen([ls, ‘-l’ , filename], stdout = subprocess.PIPE)

output = str (data.communicate())

# печать разрешений после chmod

print ( ‘file permissions after chmod % s: ‘ % (args))

if __name__ = = ‘__main__’ :

# изменение разрешений ‘sample.txt’

change_permissions( ‘755’ , ‘sample.txt’ )

Выход :

Основы применения Python в администрировании Linux

Стандартные и нетривиальные задачи системного администратора

В обязанности любого системного администратора входит решение большого количества разнообразных задач, призванных «облегчить жизнь» как ему самому, так и пользователям. То, с чем приходится сталкиваться постоянно, – мониторинг серверов или отдельных процессов, резервное копирование баз данных, просмотр логов с последующей выборкой необходимой информации, настройка и совершенствование системы информационной безопасности, заведение и редактирование пользовательских учетных записей и т.д.

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

Python vs Bash

Bash (Bourne Again Shell) – наиболее часто используемая командная оболочка по умолчанию в операционных системах GNU/Linux. Она включает в себя простой язык программирования, который позволяет при помощи условных операторов и операторов цикла использовать утилиты и программы операционной системы для написания как простых, так и сложных скриптов. В этом плане bash, несомненно, обладает некоторыми преимуществами, в частности, универсальностью и доступностью. Для того чтобы написать скрипт на bash, установка дополнительных пакетов не требуется – достаточно создать файл вида script_name.sh с последовательно исполняемыми операциями и запустить его либо добавить в качестве задачи планировщика cron.

Вот далеко не полный список задач, которые можно решить с использованием bash-скрипта:

  • вывод нескольких последних строк лога или поиск и выборка ключевых слов с последующим сохранением в отдельный файл;
  • архивирование каталога с данными с последующей отправкой архива на удаленный компьютер по ssh или telnet;
  • настройка системы бэкапа файлов базы данных с использованием дампинга;
  • запрос информации о конфигурации нескольких компьютеров в сети и отправка файла с результатами по e-mail;
  • поиск дубликатов файлов на диске с последующим выводом списка имен и запросом на удаление;
  • рекурсивная замена владельцев отдельных файлов и каталогов на диске.

Стоит отметить, что возможности командного интерпретатора зачастую используются не полностью. Многие администраторы выбирают Bash для написания простых или средних по сложности скриптов, а более крупные проекты или специфические задачи, где требуется работа с разнообразными входными данными, многомерными массивами, сокетами доверяют Perl, Python или Ruby. Отчасти это связано с проблемами переносимости bash-скриптов на другие платформы, например, Windows, отчасти с тем, что Bash воспринимается скорее как средство автоматизации работы с файлами и утилитами, чем полноценный скриптовый язык, даже несмотря на наличие в арсенале sed и awk . Еще одним минусом Bash является то, что при выполнении скрипта каждая запущенная с его помощью утилита создает свой процесс, что отражается на скорости выполнения и уровне использования ресурсов системы.

В отличие от Bash, Python является полноценным объектно-ориентированным языком программирования. Он входит в состав большинства распространенных дистрибутивов GNU/Linux, что позволяет использовать его в качестве альтернативной основы для написания скриптов, решающих задачи системного администрирования. Вот лишь несколько причин, по которым выбор нередко падает на Python:

  • удобочитаемость и компактность кода. Благодаря соблюдению четких синтаксических правил скрипт, написанный на Python, будет понятен любому IT-специалисту, знакомому с программированием, даже если он видит этот код впервые. В то же время, при внесении изменений следует обращать внимание на правильную расстановку отступов – в Python они используются в качестве разграничителей блоков кода;
  • наличие (даже в стандартной комплектации) большого количества модулей, подключаемых с помощью оператора import. Каждый из модулей состоит из набора функций и методов, которые поддерживают основные системные протоколы и форматы и легко используются при написании собственного кода. Таким образом, экономится время, а скрипт будет выглядеть более структурированным. Возможности Python также позволяют написать и подключить собственный модуль, если поставленная задача отличается специфичностью решения;
  • кроссплатформенность. Скрипты Python работают и в среде Windows, и в MacOS, и в UNIX, включая FreeBSD и GNU/Linux. Этот язык широко используется и на мобильных платформах, таких как Symbian, Android. В этом преимущество Python – Bash такими возможностями не обладает и является «встроенным» инструментарием только для семейств *NIX, *BSD и GNU/Linux. Однажды написанный на Python, скрипт с большой долей вероятности будет работать на разных платформах, решая схожие задачи, при условии, что код не будет содержать специфических для конкретной операционной системы функций.
Читать еще:  Управление памятью linux

Python является подходящим инструментарием для решения следующих задач администрирования:

  • парсинг лога или конфигурационного файла с использованием регулярных выражений;
  • разработка приложений, в том числе нестандартных, для работы с базами данных MySQL, Oracle, PostgreSQL, Sybase и др.;
  • сбор и анализ статистики интернет-трафика с нескольких IP-адресов;
  • преобразование данных в различные форматы, например, конвертация .ini-файлов в текст при помощи модуля ConfigParser;
  • работа с файлами сервера при помощи FTP-клиента;
  • поднятие простого прокси-сервера;
  • мониторинг работоспособности сервиса, запущенного на сервере, с отправкой предупреждений на e-mail администратора в случае сбоя;
  • поднятие ppp-соединения с использованием программы автодозвона;
  • поиск дубликатов с запросом на удаление или перемещение в каталоге с большим количеством файлов;
  • проверка целостности архивов бэкапа при помощи алгоритма md5;
  • и т.д.

Некоторые часто используемые модули Python

Стандартный инструментарий Python позволяет системному администратору достаточно легко создавать полезные в работе скрипты или приложения вне зависимости, идет ли речь об операциях с файлами и каталогами (модули os, re, glob, fileinput, zipfile и др.), сетевых протоколах (модули socket, ftplib, urlib, poplib, imaplib, smtplib, telnetlib и др.) или базах данных (модули mySQLdb, cx_Oracle, psycopg2, Sybase и др.). Описываемые ниже примеры наглядно показывают, каким образом возможности Python используются как для решения повседневных задач (таких как создание дампа базы данных MySQL, получение статистики использования ресурсов сервера), так и для написания простого FTP-клиента, выполняющего поиск файлов по шаблону и скачивание их в локальный каталог.

socket

Модуль socket позволяет создавать программные интерфейсы для обмена данными между процессами на стороне и клиента, и сервера. По умолчанию он поддерживает создание сокетов домена Internet для IPv4 (константа socket.AF_INET). При необходимости также есть возможность создать сокет домена UNIX (константа socket.AF_UNIX), если процессы локальны. Модуль socket участвует в создании различных сетевых приложений, например, в связке веб-сервер/браузер, почтовый сервер/почтовый клиент. Для системного администратора примером использования модуля socket может служить следующий скрипт srvstat.py :

Сервер serverhost.ru ожидает входящих соединений на порту 52001. При успешном подключении с использованием telnet он выдаст приглашение «Connection established. Ready for request» (Соединение установлено. Ожидается запрос). Единственную команду, которую сервер воспримет, будет get srvstat – она последовательно выведет информацию, полученную с помощью утилит vmstat и netstat. При попытке ввода любой другой команды будет выведено соответствующее уведомление «Unknown command» (Команда не найдена). Таким образом, администратор получит статистику использования ресурсов сервера за последние 10 секунд, а также сможет просмотреть список установленных и ждущих TCP-соединений. Выход осуществляется при помощи quit.

ftplib

Для реализации простого FTP-клиента в Python используется модуль ftplib. С его помощью можно просмотреть список файлов в заданном каталоге на ftp-сервере, скачать нужные файлы по заданному шаблону или, наоборот, закачать их на сервер – таким образом, модуль способен выполнять все основные функции, присущие FTP-клиентам. Конечно, чтобы не «изобретать велосипед», можно просто воспользоваться одним из множества уже написанных под Linux программ, например, NcFTP. Однако если задачи системного администратора более специфичны или выходят за пределы простых команд get/put, ftplib в сочетании с другими модулями Python может стать альтернативным решением проблемы. Приведенный ниже скрипт соединяется с сервером ftp и выводит список файлов из указанного каталога в соответствии с заданной маской поиска (в данном примере это все файлы с расширением *.php). После этого найденные файлы скачиваются в локальный каталог пользователя, и соединение закрывается.

Database API 2.0

Взаимодействие языка Python с различными базами данных описывается в соответствующей спецификации – Python Database API 2.0. Благодаря универсальности используемых модулей базовая реализация доступа к базе данных, типов объектов, конструкторов и расширений применима для любой БД, поддерживаемой Python.

Для обработки запросов базы данных, согласно спецификации, используются объекты подключения и объекты курсоров. В частности, доступ к базе реализуется при помощи метода connect(), к которому применяются соответствующие параметры базы:

При разработке интерфейса для работы с выбранной базой данных следует учитывать особенности ее параметров и корректировать метод connect() в соответствии с ними. В целом базовая структура интерфейса, написанная на Python, достаточно проста для понимания и реализации. Следующим шагом после подключения к базе является объявление объекта курсора (в терминологии БД курсором называется тот ее объект, который позволяет управлять контекстом выборки):

Несмотря на то что некоторые БД, например MySQL, не поддерживают курсоры, они все равно будут эмулироваться, поэтому объявление объекта курсора в любом случае необходимо. После этого можно переходить к выполнению запроса:

Для получения результата запроса используется одна из следующих команд:

По окончании работы с базой необходимо завершить работу с курсором и закрыть соединение при помощи метода close():

Одной из основных задач системного администратора является организация резервного копирования базы данных. В сети существует достаточно много ресурсов, где выложены подробные how-to, описывающие готовые backup-скрипты на Python. В частности, сама процедура создания дампа может выглядеть, например, следующим образом:

iPython

iPython представляет собой альтернативную интерактивную оболочку для работы с Python, поддерживающую расширенный список команд, включая более шестидесяти специальных, или «магических», функций (%function_name). Она является хорошим подспорьем для системного администратора, позволяя сочетать возможности bash и Python, среди которых выделяются следующие:

  • функция автодополнения по Tab
  • возможность создания псевдонимов для часто используемых системных команд при помощи функции %alias
  • запуск скрипта в интерактивном режиме при помощи функции %run
  • возможность кэширования трех последних результатов вывода при помощи соответствующих переменных _, __ и ___
  • просмотр истории всех вводимых данных с использованием функции %hist
  • префикс ! для запуска shell-команд
  • и др.

При желании iPython также можно запустить в режиме командной оболочки, используя встроенный профиль sh:

Заключение

Python – удобный инструмент для решения задач системного администрирования, как повседневных, так и более специфических. Он одинаково подходит для создания как скриптов, так и более сложных приложений, в особенности сетевых, а также может служить заменой стандартному shell в Linux. Так как Python является полноценным скриптовым языком, предпочтение в его использовании отдается специфическим задачам или тем, для решения которых возможностей bash недостаточно. В решении же повседневных задач выбор нередко падает на bash по причине его универсальности и доступности, однако преимущество Python в его удобстве и большей функциональности.

Работа с командной строкой в Linux через python Начало Назад

Друзья здравствуйте,
Хочу поделиться своим опытом по поводу ответа на вопрос:

Как запускать команды bash (в Linux) из python?

Читать еще:  Linux user name

Первый вопрос, который может возникнуть — для чего использовать другой язык, если всё (или почти всё) можно реализовать при помощи pyton?
Ответ прост — время выполнения нашего кода. Это пожалуй самый главный, решающий фактор для нас, так как мы с Вами знаем, что процессор и другие компоненты в ресивере несколько уступают по производительности настольным компьютерам. Именно поэтому я рассматриваю вариант использования bash в качестве реального инструмента при программировании для enigma2, особенно если дело касается обработки большого объёма данных, как например данных EPG.
Ну и в качестве второго аргумента приведу, что иногда на bash можно сделать более эффективно и быстрее чем на python. Например при обработке срок, используя sed.

Итак приступим к рассмотрению нашего основного вопроса:
Как Вы наверное все знаете, в python существует библиотека для этих целей под названием os
И функция os.system() выполняет всё наши команды. И в качестве результата возвратит код успешности завершённого процесса.
Однако этот вариант хорош в том случае, когда нам нет необходимости в возврате результата из командной строки.

Если же нам необходимо получить результат выполнения из командной строки, то здесь нам python даёт другой способ: функцию Popen из класса subprocess.
Вот об этом варианте я и хочу рассказать, чтобы в последствии Вы не сталкивались с теми же трудностями, что и я.

Итак функция работает следующим образом:
1. Формируем командную строку
2. Разбиваем ее на аргументы
3. Выполняем вызов функции Popen()
4. Забираем результат функцией communicate()[0]
5. Разбираем ошибки в communicate()[1].

Например мы хотим вывести список всех файлов в директории /etc, для этого напишем следующий код:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
На выходе получаем список файлов в переменной listFiles разделённые символом новой строки.
Однако и этот вариант не всегда хорош.
Для примера, если мы хотим выполнить две или три команды подряд (например для фильтрации результата при помощи grep или sed), то переданный символ соединения команд «|» не будет воспринят к исполнению и выполнение завершится ошибкой.

Здесь можно выйти из положения методом разделения потоков. Создать два потока и передать одному результат выполнения другого, как здесь:

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Однако при выполнении трех и более команд по конвейеру в bash — получается нагромождение кода. Что делать в этом случае?

Нашёл очень простое решение, описанное в документации)). Делаем следующее:
1. Формируем командную строку
3. Выполняем вызов функцией Popen(), с обязательным аргументом shell=True
4. Забираем результат функцией communicate()[0]
5. Разбираем ошибки в communicate()[1].

Другими словами, теперь мы не разбираем строку на аргументы, а пишем ее так как писали бы её в командном интерпретаторе shell, типа bash или в нашем случае tuxbox
Вот сам код, как пример — выполним команду для получения значения аргумента из файла установок enigma2:
(конечно же существуют классы работы с конфиг файлами — здесь привожу просто как пример, не более):

Вам не разрешен просмотр кода. Войдите или Зарегистрируйтесь для просмотра.
Как видно из примера мы полняем сразу три конвейерных команды cat, grep и sed.
Таким образом получаем достаточно небольшой код и результат выполнения командной строки в нашу переменную для последующей обработки.

В документации, так же указывается, что первый вариант с разбиением командной строки на аргументы, позволяет нам избежать возможных ошибок при выполнении, так как мы контролируем ввод каждого параметра в ручную, а вот второй вариант таит в себе возможность допущения ошибок в самой командной строке. Потому и предупреждают о риске при его использовании.
И в тоже время, я думаю, что каждый уважающий себя начинающий программист, прежде чем что либо писать — проверит результат в интерпретаторе shell и лишь затем вставит это в свой код на python.
По крайней мере я в это верю .

Как запустить программу на Linux

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

Дальше мы рассмотрим виды программ, их запуск программ на Linux различными способами и другие полезные для новичков вещи, опытным пользователям это все и так уже известно.

Виды программ в Linux

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

Все программы можно поделить на несколько типов:

  • Бинарные программы — содержат инструкции процессору уже готовые к выполнению, большинство программ находятся в таком формате, они быстрые и выполняются сразу же системой;
  • Программы на байт-коде — это уже не процессорные инструкции, а инструкции определенной виртуальной машины, которая может их выполнять, без виртуальной машины такие команды не могут быть выполнены. Такие программы потребляют больше ресурсов, но тоже достаточно быстрые, их преимущество в том, что они могут выполняться без изменения везде где может работать виртуальная машина. К таким программам можно отнести программы на Java.
  • Скриптовые программы — эти программы состоят из набора команд в виде обычного текста, которые выполняет специальный интерпретатор. Такие программы более медленные, но зато они проще в разработке и их код можно легко и быстро изменить.

А теперь перейдем к запуску программ.

Запуск программ в терминале

Изначально в операционных системах Unix и Linux не было графического интерфейса, поэтому программы запускались командами из терминала. Сейчас это тоже возможно и достаточно активно используется опытными пользователями. Синтаксис запуска программы выглядит таким образом:

/путь/к/файлу/программы параметры

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

Разработчики придумали обходной путь. Была создана переменная PATH, в которой хранятся все пути к папкам где обычно находятся программы — /bin, /sbin, /usr/bin, /usr/sbin и так далее. Вы можете посмотреть ее содержимое командой:

Когда вы набираете имя программы система ищет исполняемый файл с таким именем по всем папкам из PATH и если находит — то выполняет. Если же такого файла нет, то выдается сообщение — command not found. Таким образом, чтобы запустить одну из системных программ достаточно набрать имя ее исполняемого файла, например:

И можно передать параметры после пробела:

Когда программа находится не в этих каталогах, нужно указать к ней полный путь:

Если же вы хотите запустить программу через терминал ubuntu, которая находится в текущей папке, то ситуация будет немного другой. Система выполняет только поиск по папкам из переменной PATH, в текущей директории она не ищет. Поэтому, если вы наберете имя исполняемого файла, то получите ошибку. Нужно указывать полный путь, как вы помните путь к текущей папке будет ./:

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

имя_переменной = значение команда

По умолчанию эта команда открывает настройки утилиты sudo в редакторе Vim, но с этой переменной окружения настройки откроются в редакторе nano.

Запуск программ от имени другого пользователя

Вы уже знаете как запустить программу в терминале linux, а что насчет других пользователей? В Windows достаточно часто используется запуск программ от имени администратора чтобы программа могла получить больше прав доступа в системе. В Linux для этого используется утилита sudo. Ее имя можно расшифровать как switchuserdo — изменить пользователя и выполнить. По умолчанию утилита выполняет команду от имени суперпользователя root:

Читать еще:  Команды bash в linux

sudo команда
sudo whoami

Но с помощью опции -u можно выполнить программу от имени любого пользователя, зарегистрированного в системе:

sudo -u имя_пользователя команда
sudo -u postgres whoami

Команда whoami (кто я) выводит имя текущего пользователя.

Как запустить программу в фоне

Иногда возникает необходимость запустить долго выполняющуюся программу в терминале так, чтобы она не мешала дальше работать. Для этого можно использовать запуск программы в фоновом режиме linux:

dd if=/dev/zero of=

Система выведет PID, уникальный идентификатор программы, который вы потом можете использовать чтобы закрыть ее командой kill:

Как запустить скрипт в Linux

Мы уже говорили, что программы делятся на бинарные и интерпретируемые. Раньше мы говорили только про бинарные программы. Для запуска интерпретируемых нужен непосредственно интерпретатор, к таким программам относятся написанные на таких языках, как Java, Python, Perl, Ruby, PHP, NodeJS и многих других. Синтаксис запуска такой программы отличается:

интерпретатор /путь/к/файлу/программы параметры

Разные интерпретаторы ведут себя по разному, поэтому лучше сразу указывать полный путь к программе. Python обычно подхватывает скрипты из текущей папки без указания полного пути:

А Java программы нужно запускать так:

java -jar program.jar

Для файлов интерпретируемых программ флаг исполняемости необязательный, поскольку они передаются в виде параметра основной программе. Только Bash скрипты составляют исключение. Вы можете запустить скрипт интерпретатором:

Или же просто набрать путь к скрипту:

Оболочка сама определяет свои скрипты по флагу исполняемости и выполняет их. Если флаг исполняемости не установлен, то его стоит добавить:

sudo chmod u+x ./script.sh

Поэтому то и для большинства интерпретируемых программ созданы простые sh скрипты которыми их можно быстро запустить.

Запуск программ Linux в графическом интерфейсе

Намного удобнее запускать программы через графический интерфейс. Если консольные программы так запускать невозможно, то для всех графических утилит существуют ярлыки, которые вы можете найти в главном меню системы:

Кроме того, вы можете запустить программу из файлового менеджера, двойным кликом мышью, но тогда для нее обязательно должен быть установлен флаг исполняемости.

Точно так же работает запуск скриптов в графическом интерфейсе. Вы можете найти все ярлыки из меню в каталоге /usr/share/applications/. Любую программу можно запустить двойным щелчком отсюда. Но давайте посмотрим что находится внутри ярлыка, для этого откройте его в текстовом редакторе:

Кроме всего прочего, в строке Exec указана команда, которая выполняет запуск программы linux, когда вы делаете двойной клик на ярлыке. Вы можете взять один из существующих ярлыков и сделать на его основе свой. Здесь указано просто имя программы. Но важно заметить, что лучше указывать полный путь в таких местах, как ярлыки, скрипты, cron и так далее это уменьшит количество ошибок, поскольку вы не можете знать проверяет ли система в этом случае PATH или ищет программу только в текущем каталоге. Теперь вы знаете все о том как запустить программу на linux.

Выводы

В этой статье мы рассмотрели как запустить программу через терминал ubuntu или в других дистрибутивах Linux. Несмотря на то, что это кажется очень простой темой, тут есть свои интересные моменты, которые могут быть полезны. Но вы о них уже знаете. Если у вас остались вопросы, спрашивайте в комментариях!

Как скачать и установить Python 3 на Ubuntu 18.04 (Linux)

В этой статье мы скачаем и установим последнюю версию Python 3 на Ubuntu. Затем убедимся, что python установлен корректно, рассмотрим популярные ошибки и их решения.

Все команды выполнялись в Ubuntu 18.04 LTS, но эта статья поможет установить python на Ubuntu 16.04, Debian, Mint и другие Linux-системы.

Мы используем командную строку Ubuntu — Терминал, для работы. Вы можете открыть Терминал через поиск или комбинацию клавиш Ctrl+Alt+T.

Как проверить текущую версию Python

Проверка текущей версии программного обеспечения не только помогает вам получить номер версии этого программного обеспечения, установленного в вашей системе, но и проверяет, действительно ли программное обеспечение установлено в вашей системе.

Мы сделаем то же самое для Python, выполнив следующую команду в нашем терминале:

Версия будет отображаться, как показано в приведенном выше выводе. Число зависит от того, когда вы обновили систему.

У вас также может быть несколько версий Python, установленных в вашей системе. Следующая команда выведет список всех версий Python, которые есть в вашей системе:

Как установить Python 3 на Linux через apt-get

Установка Python 3 на Ubuntu с помощью команды apt-get довольно просто. Во-первых, вам необходимо обновить репозиторий системы, чтобы можно было установить последнюю доступную версию без проблем совместимости. Для этого выполните команду от имени администратора:

Так как Python уже установлен в нашей системе (это мы проверили в предыдущем разделе), нам нужно обновить его до последней версии следующим образом:

Система может попросить вас ввести пароль для прав sudo , поскольку только авторизованный пользователь может добавлять / удалять и обновлять программное обеспечение в Ubuntu.

Система также запросит подтверждение обновления. Введите Y , а затем нажмите Enter, чтобы продолжить.

Так вы обновили Python до последней доступной версии. Проверьте:

Если Python не установлен, вы можете установить его с правами sudo используя команду apt-get :

Как установить Python 3 на Linux из архива

Сайт Python.org содержит список всех выпусков Python по этой ссылке:
https://www.python.org/downloads/source/

Поэтому, если вы решите установить Python вручную, можете скачать python любой сборки c официального сайта. На сайте также есть последние версии, которые вы не загрузите с помощью команды apt-get .

На момент подготовки материала Python-3.7.1 последняя доступная версия, поэтому мы скачаем его файл .tgz с помощью следующей команды:

Когда архив с ptyhon будет скачан, выполните следующую команду, чтобы извлечь файлы:

После того, как файлы извлечены, нужно запустить C-программу «configure». Для этого вам необходимо установить компилятор языка программирования C — gcc в вашу Linux-систему. Если он не предустановлен, установите его с помощью следующей команды:

Измените текущую директорию на Python-3.7.1 или на ту версию python, которую вы скачали и извлекли:

Теперь используйте следующую команду, чтобы запустить скрипт конфигурации:

Теперь пришло время установить Python.

Если вы не можете запустить команду make , установите make с помощью следующей команды:

Запустите следующую команду для установки языка программирования Python:

Скачанная версия Python с официального сайта установлена ​​в вашей Linux-системе.

Ошибки, которые могут возникнуть при установке

1. Zipimport.zipimporterror

Когда вы запускаете команду sudo make install , можете столкнуться со следующей ошибкой:

Это значит, что нужно установить пакет с именем zlib1g-dev , так как он, возможно, вам не был нужен раньше.

Решение:
Выполните следующую команду с правами sudo, чтобы установить отсутствующий пакет zlib1g-dev :

Затем повторите команду для завершения установки Python:

2. No module named ‘_ctypes’

Это ошибка появляется также при запуске команды sudo make install :

Это значит, что нужно установить пакет с именем libffi-dev , так как он, возможно, вам не был нужен раньше.

Решение:
Выполните следующую команду с правами sudo, чтобы установить отсутствующий пакет libffi-dev :

Затем повторите команду для завершения установки Python:

Как обновить команду python3 до последней версии

Перед установкой Python вручную из архива номер версии нашей установки Python был 3.6.7

Когда я проверил номер версии python3.7 , он дает следующий вывод:

Обновите версию python для команды python3 следующей командой:

Теперь команда python3 работает с последней версией Python в моей системе (3.7.1).

Заключение

В большинстве версий Ubuntu уже установлены Python и Pip3, но после прочтения этой статьи вы узнали, как загрузить и обновить их до последних версий.

Ссылка на основную публикацию
Adblock
detector