Linux запуск файла нет такого файла

Нет такого файла или каталога, не запускается скрипт.

Помощник Админа > Blog > Windows & Linux > Linux > Нет такого файла или каталога, не запускается скрипт.

Случилось, что при скрипта выводится сообщение: «: Нет такого файла или каталога».
[root@localhost Python_or_ Bush]# ./ithelp21.py
: Нет такого файла или каталога.

Варианты решения следующие:

1. Для начала, немного теории, которая возможно сразу же решит вопрос. Как мы запускаем файл?

— если вы находитесь в директории файла. (Часто новички просто вводят просто названия файла для запуска имя_файла.py)

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

Если вы находитесь в директории файла вводим команду ls -l и ищем в списке файл.
Если файл запускает указанием полного пути, тогда команда будет выглядеть: ls -l /var/share/.

Файла нет?! — проверяем путь до файла и запускаем с правильным указанием пути до него.
Файл на месте — переходим ко второму пункту.

2. Команда ls — l покажет нам какие права есть у файла.
Если у вашего пользователя недостаточно прав на запуск файла.
С правами все порядке? — переходим к третьему пункту.

3. В операционных системах есть свой формат символов, обозначающий перевод строк:

Windows - \r\n или CRLF (код 0D0A) Unix - \n или LF (код 0A)

Если вы откроете ваш файл с помощью Notepad ++ , то можете увидеть в нижней информационной панели значения:
Windows(CR LF) или UNIX (LF).

Если вы видите Windows (CR LF), значит вам нужно преобразовать файл в UNIX (LF).
Делается это в Notepad ++. Нажимаем правой кнопкой мыши на название «Windows (CR LF)» и в открывшемся списке выбираем «преобразовать в UNIX-формат (LF)».

Надеюсь вам помог один из данных вариантов. Пишите в комментариях, какой способ вам пригодился или вы узнали о другом варианте решения!

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Файла нет, хотя он есть. что это значит?

У тебя 64-битный дистрибутив? Установи тогда 32-битный glibc, это исправит ошибку.

Читайте также:  Курсы системных администраторов линукс

Да, наверно в этом дело… Просто странно что он пишет «нет файла»

Неформатированые посты смотрю по диагонали, да.

Скорее всего нет этого файла. В коде ошибки (ENOENT видимо) просто не уточняется, к какому именно файлу она относится, ну а баш думает что ошибка может касаться только того файла который ты запускаешь, вот и пишет так. Как уже выше предположили, скорее всего этот файл есть в пакете с 32-битным glibc.

firkax ★★★★ ( 04.11.21 23:05:06 MSK )
Последнее исправление: firkax 04.11.21 23:05:59 MSK (всего исправлений: 1)

Всё верно, спасибо. Учту что баш может приврать иногда)

Просто странно что он пишет «нет файла»

Да, неожиданно пишет, когда первый раз сталкиваешься.

Так ругается на ld-linux.so обычно. Например, нет 32-битного на 64-битной системе. Или, например, в NixOS так же ругается на неродную ему 64-битную. Давеча игрался с binfmt_misc — там тоже можно получить такое сообщение, если неверно указать интерпретатор.

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

/lib/ld-linux.so.2: cannot open `/lib/ld-linux.so.2’ (No such file or directory)

Да, что-то мне его совсем не хватает, к тому же оказывается я на дебиане ) . На рпм бы сам нашёл наверно, а тут что-то всё как-то не так. Подскажите apt-get install … как дальше?

libc6-i386. и установи себе apt-file

Говорит: Следующие НОВЫЕ пакеты будут установлены: libc6-amd64-cross libc6-i386-amd64-cross libc6-i386-cross libc6-i386-x32-cross libc6-x32-cross

и вроде как установил, а файла как не было так и нет $ file /lib/ld-linux.so.2 /lib/ld-linux.so.2: cannot open `/lib/ld-linux.so.2’ (No such file or directory)

Нужно установить libc6:i386 . Если не устанавливается, то нужно перед установкой выполнить от рут:

dpkg --add-architecture i386 apt-get update 

А что это было когда я запустил apt-get install libc6-i386 ?

Интересный этот апт. Если напишешь что-то не то, Yum обыкновенно посылает лесом, а вот апт соглашается, начинает суетиться, очень многословно что-то делать. Только хрен его знает что..

Заметьте, выбирается «libc6-i386-ppc64-cross» для регулярного выражения «libc6-i386.» Заметьте, выбирается «libc6-i386-mipsn32-cross» для регулярного выражения «libc6-i386.» Заметьте, выбирается «libc6-i386-x32-cross» для регулярного выражения «libc6-i386.» Заметьте, выбирается «libc6-i386-amd64-dcv1» для регулярного выражения «libc6-i386.»

Это ты кросс-компилятор установил, он 64-битный. libc:i386 же – это именно что 32-битная версия библиотеки.

Читайте также:  Kali linux запуск консоли

Вот поэтому Линус на «федоре», а Грег – на «арче».

Korchevatel ★★★★★ ( 15.01.22 04:01:55 MSK )
Последнее исправление: Korchevatel 15.01.22 04:02:34 MSK (всего исправлений: 1)

На самом деле создаётся новый процесс bash или чего-то ещё и этот процесс возвращает из exec определённый код (числовой) ошибки, вызвавший процесс интерпретирует этот код как «нет такого файла» Может ошибка в чём-то другом, надо, предположительно, запустить трассировку и посмотреть, какой код ошибки вернёт екзек и самому его интерпретировать, ну это так, мысли вслух

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

IvanR ★★★ ( 15.01.22 04:47:08 MSK )
Последнее исправление: IvanR 15.01.22 04:50:35 MSK (всего исправлений: 1)

Проникся мыслями.. А как запустить трассировку? Да, библиотеки не было для 32 битных эльфов.

Это ты кросс-компилятор установил А что им можно делать? ))

Источник

Исполняемый файл есть, но его нет

Скачал линуховый клиент для фотохостинга photofile. В архиве исполняемый файл. Пытаюсь запустить.

sunny@localhost:~/photofile$ ls -l итого 10634 drwxr-xr-x 2 sunny sunny 296 Дек 14 00:30 Frames -rwxr-xr-x 1 sunny sunny 106206 Авг 17 2007 maskphoto.jpg -rwxr-xr-x 1 sunny sunny 10771230 Май 19 2008 photofile sunny@localhost:~/photofile$ ./photofile bash: ./photofile: Нет такого файла или каталога sunny@localhost:~/photofile$ /home/sunny/photofile/photofile bash: /home/sunny/photofile/photofile: Нет такого файла или каталога

Как это понять, файл есть, но его вдруг нет? Или это какая-то защита, предотвращающая от запуска чего не попадя? Дистрибутив — Debian

ему там может чего надо еще? посмотри ldd photofile что говорит? есть ли у тебя все что нужно?

Похоже, ему твоя glibc не нравится

а что если это файл скормить gdb? может он чего больше скажет?

$ ldd ./photofile не является динамическим исполняемым файлом

Ну надо же, они что в Сети фуфло распространяют.

Хотя такая же штука была когда я пытался запустить скачанный с офиц. сайта firefox. Подозрительно всё это.

А ты с архитектурой не промахнулся?

ппц, линуксоиды скачивают и запускают бинарники. Куда катится мир?

А это не баш-скрипт ли часом? (:
Текстовым редактором откройте.

Читайте также:  Kali linux поиск субдоменов

Так бывает, когда неправильно shabang указан.

а чмод + икс не нужно сделать?

>Так бывает, когда неправильно shabang указан.

тогда обычно bad interpreter говорят вроде перед No such file or directory

>а чмод + икс не нужно сделать?

>а чмод + икс не нужно сделать?

не читал первое сообщение? там же вывод ls -l есть.

-rwxr-xr-x 1 sunny sunny 10771230 Май 19 2008 photofile

думаешь noexec? там ошибка другая была бы емнип.

file photofile
head -n 1 photofile

>Ну надо же, они что в Сети фуфло распространяют.

Пока что видно только что ты «в Сети фуфло распространяешь»

Это плохой файл, не исполняемый. Удалите его.

лддэхни его и посмотри какой библиотеки нехватает.

>Как это понять, файл есть, но его вдруг нет? Или это какая-то защита, предотвращающая от запуска чего не попадя? Дистрибутив — Debian

Ну видимо файл запускается, shell читает sha-bang, там написано /bin/bash, запускается /bin/bash ./photfile, но вот эта команда почему-то не видит этого файла. Попробуйте напрямую:

Ну и сам файл поглядите. (xxd | head и file)

Покажи file photofile
А заодно uname -a

Не, лучше наверное не показывай.

Дай угадаю — у тебя amd64?
А ты запускаешь на ней 32-битный бинарник, отсюда проблемы.
Копай в эту сторону.

и оно покажет что к чему и почему.

/dev/md2 / reiserfs rw 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 procbususb /proc/bus/usb usbfs rw 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/md0 /boot reiserfs rw 0 0 /dev/md3 /var/lib/samba/usershares reiserfs rw 0 0
$ /bin/bash ./photofile ./photofile: ./photofile: cannot execute binary file

Ygor писал

file photofile

и оно покажет что к чему и почему.

$ file ./photofile ./photofile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped

HomeUser писал

Дай угадаю — у тебя amd64? А ты запускаешь на ней 32-битный бинарник, отсюда проблемы. Копай в эту сторону.

У меня на самом деле процессор AMD AM2+ 64 двухядерный. И система вся архитектуры amd64. Но вроде как бы 32-битные программы должны без проблем запускаться на 64-битной платформе, всегда так было. Вот 32-битный skype запускается.

Источник

Оцените статью
Adblock
detector