Не запускаются приложения linux

Обновлено: 06.07.2024

Почему кажется, что я не могу открыть исполняемый файл, созданный на C++, дважды щелкнув по нему.

У меня есть файл, который я запустил из IDE, и я хотел бы знать, есть ли способ установить этот файл для открытия терминала при щелчке по нему, как это делает файл .exe в Windows.

Код C++, который я мог бы добавить в свой исходный код, который позволит это.

Настройте Мой ПК, чтобы открыть его.

Я стараюсь избегать наборов инструментов, насколько это возможно. Недавно я скомпилировал приложение для Windows (спасибо моему двоюродному брату, у него есть компьютер с Windows)

И было бы замечательно, если бы можно было сделать то же самое, что можно сделать в Windows на Linux, потому что у нас есть 2 Release Folders.

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

Я добавил эту строку:

Он открывается на терминале, но просто показывает путь к файлу, а не саму программу.

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

Просто "cd" в каталог, в котором находится ваш сгенерированный исполняемый файл.

Заменив "myexecutable" на имя вашего вывода компилятора.

Затем попробуйте запустить его с ./myexecutable

Я считаю, что это также должно сделать программу "работоспособной" с помощью щелчка мыши и консоли.

Точно так же, если вам нужно запустить "скрипт" из команд, вы можете попробовать следующее в файле скрипта, сохранить его как «myexe.sh» или что-то подобное:

Затем снова используйте

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

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

Во-первых, это "Terminal Emulator", в среде на основе Gnome это обычно Gnome Terminal.

Затем есть "Shell", в Linux это обычно bash, хотя возможны и другие оболочки.

"Shell" работает внутри "Terminal Emulator". Это различие связано с возрастом физических терминалов, где физический терминал - это аппаратное обеспечение, которое принимает данные, пишет текст в цветах и т.д., А Shell - это программное обеспечение, которое обрабатывает пользовательские команды и управляет другими процессами на основе заданных команд.

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

"Оболочка" не всегда работает внутри эмулятора терминала; Существуют также графические оболочки, такие как Nautilus (подсказка, Nautilus - название морского существа с большой раковиной) или Windows Explorer (не путать с Internet Explorer).

Как в оболочке командной строки, например, bash, так и в графической оболочке, например, Nautilus, исполняемый файл помечается установленным битом execute .

В командной строке вы можете использовать ls -l для просмотра битов прав доступа к файлу, например, rwxrwxrwx означает, что каждый может читать / писать / выполнять программу; rwxr-xr-- означает, что владелец имеет полное разрешение, люди в группе файла могут читать и выполнять, но не могут писать, а другие могут только читать файл. В Nautilus вы можете щелкнуть правой кнопкой мыши файл> Свойства> вкладка Разрешения. На странице свойств Разрешения вы можете получить разрешение для файла, подобное тому, которое есть в командной строке.

Файл с установленным битом выполнения рассматривается как исполняемый файл и может быть выполнен с помощью ./filename (оболочка командной строки) или двойного щелчка (графическая оболочка).

Наконец, есть несколько других тонкостей того, как оболочка выполняет файл. В большинстве оболочек Linux вы можете "выполнить" скрипт, написанный на python/perl/php/bash, который не является скомпилированным исполняемым файлом. Поскольку эти файлы не являются скомпилированными в исходном коде исполняемыми файлами, для их выполнения требуется интерпретатор (например, интерпретатор python). В отличие от оболочки Windows (Explorer), которая определяет интерпретатор для вызова через расширение файла; Оболочки Linux определяют правильного интерпретатора, глядя на строку "hashbang", которая выглядит следующим образом

когда бит выполнения файла установлен, и у файла есть эта строка hashbang, оболочка вызовет интерпретатор /usr /bin /python с текущим файлом в качестве аргумента.

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

почти все программы перестали запускаться [РЕШЕНО]

почти все программы перестали запускаться [РЕШЕНО]

Вчера я определился с тем, что Роса остается жить на моем компе. Всвязи с чем форматировал жесткие диски и переустановил систему уже на постоянку.
Что я делал :
Ssd диск Sda 1 - стоит винда, пока оставил ее жить.
2- swap
3 - /
4 - /home

Обычные sdb форматнул в ntfs ( будет общий для Росы и винды)
Sdc1 - ntfs
2 - ext4 если вдруг еще какой дистр. захочу поставить.


Систему установил, вошел на драйверах vesa, не обновляя поставил ядро 3.18.
Загрузился на 3.18 , установил первую партию обновлений. Система сказала нужна перезагрузка. До перезагрузки зашел в настройки, установил в автозапуск clementine , скрипт к нему clementine -p.

Потомм зашел в настройки внешних носителей, включил автомонтирование и поставил галки на sda1 sdb sdc1, на корневой и home ставить не стал, т. к. я подумал что это система, итак монтируется.

Перезагрузился : кликая на иконки программ ни одна не запускалась. Запустился только установщик программ. При этом на рабочем столе пкм срабатывает, меню открывается. Иконки из simple перетаскиваются. К инету подключается. Ctr*alt*f2 срабатывает. Попытался в tty2 запустить системные настройки введя команду, которая прописана в иконке на запуск настроек ( пкм - свойства на иконке работало) , выдалочто-то нет коннекта с хсервером. Ради пробы попробовал XFdrake, в консоле включился.

Какое мнение ГУРУ? Что можете подсказать еще?
До компа доберусь завтра, после работы.

Последний раз редактировалось KA-25 02 апр 2015, 14:36, всего редактировалось 2 раза. запустите в консоли что-нибудь графическое, тот же dolphin, посмотрите на ошибки. Пробовал, not connect X server, что-то в этом духе. Я на работе, у компа завтра в 10 утра только буду. Мс запустился в консоли. Если у кого есть желание, можете повторить процедуру с автомонтированием методом исключения будет ясно, оно виновато или не оно))) А попробуйте, не запуская графику, залогиниться в консоли и запустив mc ,
войти в папку

/.kde4/share/config/ и удалить файлы kded_device_automounterrc и device_automounter_kcmrc.
А потом уже войти в графику.

hw-probe сделайте, посмотрим в логи , что там с Х сервером творится. От root'а только сделайте. PastorDi писал(а): hw-probe сделайте, посмотрим в логи , что там с Х сервером творится. От root'а только сделайте. А он и сможет, только, под root, у обычной учетки блок на запись: Rosa 2016.1 Fresh KDE5 x64-86 (HP ProBook 440 G4 (y7z81ea)) Ни разу не претендую ни на что, но. не вижу причин, почему бы благородным донам не обратить внимание на дату поста psicho666 писал(а): Ни разу не претендую ни на что, но. не вижу причин, почему бы благородным донам не обратить внимание на дату поста Ну я сомневаюсь что это шутка от разработчиков))) а беда случилась еще 31 марта в ночь на 1 апреля)
И мне было не очень смешно KA-25 писал(а): Ну я сомневаюсь что это шутка от разработчиков))) а беда случилась еще 31 марта в ночь на 1 апреля)
И мне было не очень смешно Надеюсь, что всё исправится после удаления файлов, о которых написал выше.
Монтировать автоматически ntfs c установленной там системой,
не лучшее решение.
Кто знает, что там у вас.
А если винда в спящем режиме, как вы её подключите?
Хотя на первый взгляд по признакам, проблемы с правами на файлы в домашнем каталоге.
Когда удалите файлы, будет видно. Там нужные файлы)) гибернация, сон и прочая хрень виндовая отключена. Винду выкючаю через скрипт, чтоб эта зараза правильно выключалась и диски не блокировала) KA-25 писал(а): Там нужные файлы)) гибернация, сон и прочая хрень виндовая отключена. Винду выкючаю через скрипт, чтоб эта зараза правильно выключалась и диски не блокировала) Я не спорю.
Просто привык считать как аксиому, что автоматическое подключение ntfs может привести к проблемам.
Там и падающие иксы и ещё фик знает что.
Но не могли же вы сломать права, что могло бы блокировать запуск приложений.
Как удалите эти два файла и будет отключено автоподключение дисков,
будет ясно, виновато ли это. Я грешу на не установленные галочки диск с корневой системой и диск /home , ибо с автомонтированием почти неделю просидел, когда Росу изучал. Завтра отпишусь как и что. KA-25 писал(а): Я грешу на не установленные галочки диск с корневой системой и диск /home Это совершенно не влияет и зависит не от вас.
Эти диски монтируются на уровне системы. KA-25 писал(а): Если у кого есть желание, можете повторить процедуру с автомонтированием методом исключения будет ясно, оно виновато или не оно)))

то ли лыжи не едут, то ли я .

Теперь по порядку:
1. Включаю комп,ни чего не изменилось, кроме rpmdrake ничего не запускалось, обои меняются (папка на диске с виндой, который автомонтировался), при нажатии на иконку питания в системном лотке, жесткое зависание. Выключаю питанием системного блока.

2. Загружаюсь в режиме восстановления ( как раз чтобы графика не запускалась, я прав ? ), Делаю пробу. Запускаю mc, нахожу device_automounter_kcmrc, просматриваю, там три числа, мне это ничего не сказало - удалил. Нахожу kded_device_automounterrc, просмотр, тут уже мне понятно что к чему . Удалять не стал. По порядку каждому диску прописал false и делал перезагрузку. чтоб методом исключения вычислить негодяя, если в нем дело. Изменений нет. ( после отключения монтирования диска с виндой, обои не загрузились, что есть правильно).

3. Удалил из автозагрузки скрипт на запуск клементине. На всякий случай.

4. Напряг память что еще делал. Я включил автовход. Пытался найти в конфигах файл по названию подходящему по смыслу. Не нашел ( познаний не хватило)

5. После очередной обычной загрузки нажал alt+ctrl+back_space. попал на окно входа в систему. Нажал на шестеренку выбрал режим "упрощенный". Вошло. Прописал dolphin. Он запустился. Уже обрадовался. В юзер/бин нашел систем сеттинг. Запустил. Еще раз обрадовался. Полез в настройки автовхода чтобы выключить. тут облом. Ошибка 4. Окно с вводом пароля не вышло. Ну думаю ладно. В папке юзер/бин в долфине нажал пкм, открыл консоль. В консоле клавиатура работать отказалась ( хотел запустить системсеттинг в режиме су).

7. Шестеренка-вход после сбоя Х сервера. Загрузился. Опять тишина и. секунд через 20 просрался, открылись программы которые успел нажать в эти 20 сек, запустился клементине из автозапуска, проиграла мелодия входа в систему, диски кстати приавтомонтировались. Короче заработал. Сделал пробу.

Да, такое иногда случается даже в Линукс: вы запускаете какую-то программу, а она не запускается. Или делаете какое-то совершенно безобидное действие в программе, и она вдруг закрывается. Тогда не исключено, что вы нашли ошибку в программе.

Кто сломал программу?

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

Что делать с ошибкой?

Где именно сломалось?

Иногда случается, что программа отваливается совершенно без симптомов. Но это бывает редко, если уметь «запускать» программы. Обычно от программы можно получить достаточно сведений для определения причины ошибки.

Не запускайте неработающую программу из меню КДЕ (или любой другой среды) или через значок на рабочем столе. Откройте терминал, наберите в нем имя исполняемого файла программы, и нажмите ввод. Если вы не знаете, какой командой запускается программа, подсмотрите её в свойствах значка или пункта меню.

Многие программы протоколируют свою работы в log-файлах. И в случае возникновения какой-либо ошибки, информация в лог-файлах может оказаться крайне ценной. Большинство логов следует искать в каталоге /var/log . Многие программы имеют ключи запуска, с помощью которых можно увеличить степень подробности лог-файлов. Обычно, эти ключи следует искать в man по ключевым словам log или debug .

Например, в man smbd можно прочитать:

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

Один из наиболее часто востребованных лог-файлов является файл /var/log/Xorg.0.log , в котором содержится протокол работы графической подсистемы.

Примечание: Для систем на базе systemd (к таковым относятся "официальные" выпуски альта с 7.0) вместо логов придётся смотреть вывод journalctl.

Как устранить проблему?

Если проблема вызвана некорректными настройками программы, то воспользуйтесь старыми настройками, сохранёнными в резервной копии ваших данных. Если такой возможности нет, то стоит попробовать «отодвинуть в сторону» имеющиеся настройки, и запустить программу с настройками по умолчанию. Обычно, под «отодвинуть в сторону» подразумевается временное удаление (переименование, перемещение) каталога с настройками программы. Настройки программ лежат в домашнем каталоге пользователя, в подкаталогах, начинающихся с точки, например в

/.blender . Приложения KDE хранят свои настройки в

/.kde/share/apps или других каталогах в каталоге

/.kde4 для KDE4). Если вы не знаете, где именно находятся настройки, то создайте нового пользователя, залогиньтесь им, и попробуйте запустить подозрительную программу.

Где именно сломалось, для опытных пользователей

Иногда локализовать ошибку помогает использование программы strace . Особенно хорошо работает для обнаружения проблем с правами доступа к файлам (устройствам), необходимым для работы программы.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sudo команда
sudo whoami

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. Несмотря на то, что это кажется очень простой темой, тут есть свои интересные моменты, которые могут быть полезны. Но вы о них уже знаете. Если у вас остались вопросы, спрашивайте в комментариях!

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

Способ 1: Менеджер приложений

Существует несколько доступных вариантов инсталляции Wine. Первый подразумевает использование менеджера приложений, который встроен в популярные дистрибутивы, основанные на Debian или RedHat. В первую очередь рассмотрим именно этот вариант, а осуществляется поставленная цель так:

Открытие менеджера приложений для установки Wine в Linux

Переход к поиску приложения Wine в Linux для дальнейшей установки

Успешное нахождение приложения Wine в Linux для дальнейшей установки

Кнопка для начала установки на странице приложения Wine в Linux

Подтверждение начала установки Wine в Linux через менеджер приложений

Ожидание завершения инсталляции приложения Wine в Linux через менеджер приложений

Открытие программы Wine в Linux после установки через менеджер приложений

Сейчас давайте приступим к рассмотрению альтернативного варианта инсталляции, если этот вам не подходит, а о предварительной настройке установленного инструмента поговорим в отдельном шаге данного материала.

Способ 2: Официальные репозитории

Запуск терминала для установки Wine в Linux через официальные репозитории

Ввод команды для установки Wine в Linux через официальные репозитории

Подтверждение установки Wine в Linux через официальные репозитории

Одобрение уведомления о занятом пространстве при установке Wine в Linux

Ожидание завершения установки программы Wine в Linux через терминал

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

Шаг 2: Первый запуск и настройка Wine

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

Запуск программы Wine в Linux после установки через терминал

Подготовка программы Wine в Linux для функционирования

Пользовательская настройка программы Wine в Linux после установки через терминал

На этом процедура конфигурации успешно завершена, а значит, можно переходить к непосредственному запуску имеющихся EXE-файлов.

Шаг 3: Запуск EXE-файлов через Wine

Перед началом выполнения поставленной задачи хотим отметить, что не стоит рассматривать Wine как полноценное средство работы с программами для Windows. Конечно, он является эмулятором, но потребление системных ресурсов при запуске софта поднимается в несколько раз, а также могут отсутствовать какие-либо опции, изначально работающие в Windows. Далее мы расскажем о более подходящих решениях для использования ПО в Linux, а сейчас давайте все-таки разберемся с выполнением EXE-объектов.

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

Переход к файлу для его дальнейшего запуска Wine в Linux

Переход к выбору приложения для запуска программы через Wine в Linux

Выбор программы Wine в Linux в качестве средства запуска EXE-файла

Установка EXE-файла в Wine в Linux для дальнейшего запуска

Ожидание завершения установки программы EXE через Wine в Linux

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

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

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Читайте также: