Ответ
Запуск исполняемого файла в Linux зависит от его типа и расположения. Вот практические шаги, которые я выполняю:
1. Проверка и настройка прав:
# Сначала проверяю, что файл действительно исполняемый
file my_program
# Вывод: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked...
# Даю права на выполнение, если их нет
chmod +x ./my_program
2. Запуск:
# Если файл в текущей директории, обязательно указываю путь
./my_program
# Если файл добавлен в PATH, можно запускать по имени
my_program
3. Распространенные проблемы и их решение:
- Ошибка: "bash: ./my_program: Permission denied"
# Проверяю права ls -la my_program # Если нет 'x', исправляю chmod u+x my_program - Ошибка: "bash: ./my_program: No such file or directory" при наличии файла
# Проверяю архитектуру и зависимости file my_program # Убеждаюсь, что это ELF для правильной архитектуры ldd my_program # Проверяю наличие всех shared librariesЕсли
lddпоказывает "not a dynamic executable", возможно, файл статически слинкован или это скрипт. -
Запуск скриптов (Bash, Python):
# Для bash-скриптов с shebang (#!/bin/bash) ./script.sh # Для Python-скриптов можно явно указать интерпретатор python3 script.py
4. Пример из практики (запуск самописного Go-приложения):
# Компилирую
GOOS=linux GOARCH=amd64 go build -o myapp ./cmd/main.go
# Копирую на сервер и запускаю
scp myapp user@server:/opt/app/
ssh user@server "cd /opt/app && chmod +x myapp && ./myapp --config prod.yaml"