Не запускаются файлы .sh
Ubuntu Gnome 16.04.1 x86-64. Собственно, проблема. Поставил в наутилусе настройку чтобы спрашивал открыть текст или запустить, запускаю — ноль реакции. На Линукс минт циннамоне работало изначально, тут нет. Как можно решить?
А что в файле? Какой вывод ls -la?
ls -la показывает, что всё root. Хочу уточнить, что не работает не один файл, а все .sh, что я пробовал
а почему всё рут? из терминала работает вообще? Под каким юзером запускаешь? и +х есть?
Ну раз все root — значит, все заrootись! 🙂
А права на файл какие все же?
У него все рут, в этом случае обычный пользун ничего не сможет сделать с этим файлом, кроме как прочитать.
Тогда зарутиться и заюзать chown и можно применять chmod.
Вопрос только в том, есть ли у него доступ к руту.
Если это скрипт из какого-то системного пакета — то так лучше не делать. Хотя, кто его знает, инфы то нет 🙂
Как вариант — запусти скрипт из консоли и посмотри, что пишет. Авось, запускаемой программе зависимостей не хватает.
Согласен, всё зависит от конкретной ситуации.
Да, дейстительно, пишет что не хватает какой-то библиотеки. Сейчас попробую установить
Источник
Запуск скрипта sh в Linux
Вся сила Linux в использовании терминала. Это такая командная оболочка, где вы можете выполнять различные команды, которые будут быстро и эффективно выполнять различные действия. Ну впрочем, вы наверное это уже знаете. Для Linux было создано множество скриптов, которые выполняются в различных командных оболочках. Это очень удобно, вы просто объединяете несколько команд, которые выполняют определенное действие, а затем выполняете их одной командой или даже с помощью ярлыка.
Но у новичков может возникнуть вопрос — как запустить скрипт в Linux, что для этого нужно сделать, что будет происходить и какие команды нужно выполнить. Но сначала нужно рассмотреть как работают скрипты и что такое исполняемость.
Как работают скрипты
В Linux почти не используется расширение файла для опережения его типа на системном уровне. Это могут делать файловые менеджеры и то не всегда. Вместо этого, используются сигнатуры начала файла и специальные флаги. Система считает исполняемыми только те файлы, которым присвоен атрибут исполняемости.
Теперь о том, как работают скрипты. Это обычные файлы, которые содержат текст. Но если для них установлен атрибут исполняемости, то для их открытия используется специальная программа — интерпретатор, например, оболочка bash. А уже интерпретатор читает последовательно строку за строкой и выполняет все команды, которые содержатся в файле. У нас есть несколько способов выполнить запуск скрипта linux. Мы можем запустить его как любую другую программу через терминал или же запустить оболочку и сообщить ей какой файл нужно выполнять. В этом случае не нужно даже флага исполняемости.
Запуск скрипта sh в Linux
Сначала рассмотрим пример небольшого sh скрипта:
#!/bin/bash
echo «Hello world»
Вторая строка — это действие, которое выполняет скрипт, но нас больше всего интересует первая — это оболочка, с помощью которого его нужно выполнить. Это может быть не только /bin/bash, но и /bin/sh, и даже /usr/bin/python или /usr/bin/php. Также часто встречается ситуация, что путь к исполняемому файлу оболочки получают с помощью утилиты env: /usr/bin/env php и так далее. Чтобы выполнить скрипт в указанной оболочке, нужно установить для него флаг исполняемости:
chmod ugo+x script.sh
Мы разрешаем выполнять запуск sh linux всем категориям пользователей — владельцу, группе файла и остальным. Следующий важный момент — это то место где находится скрипт, если вы просто наберете script.sh, то поиск будет выполнен только глобально, в каталогах, которые записаны в переменную PATH и даже если вы находитесь сейчас в той папке где находится скрипт, то он не будет найден. К нему нужно указывать полный путь, например, для той же текущей папки. Запуск скрипта sh в linux:
Или полный путь от корня:
Если вы не хотите писать полный путь к скрипту, это можно сделать, достаточно переместить скрипт в одну из папок, которые указаны в переменной PATH. Одна из них, которая предназначена для ручной установки программ — /usr/local/bin.
cp script.sh /usr/local/bin/script.sh
Теперь вы можете выполнить:
Это был первый способ вызвать скрипт, но есть еще один — мы можем запустить оболочку и сразу же передать ей скрипт, который нужно выполнить. Вы могли редко видеть такой способ с bash, но он довольно часто используется для скриптов php или python. Запустим так наш скрипт:
А если нам нужно запустить скрипт на php, то выполните:
Вот так все просто здесь работает. Так можно запустить скрипт как фоновый процесс, используйте символ &:
Даже запустить процесс linux не так сложно.
Выводы
Как видите, запуск скрипта sh в linux — это довольно простая задача, даже если вы еще плохо знакомы с терминалом. Существует действительно много скриптов и некоторые из них вам возможно придется выполнять. Если у вас остались вопросы, спрашивайте в комментариях!
Источник
Почему не запускается cron скрипт?
Помогите неопытному. Операционная система CentOS 6.3. Пытаюсь настроить бэкап папки и базы данных через rsync. Скрипты через консоль запускаются нормально, все работает, крон ошибок при сохранении не выдает, просто пишет «installing new crontab». Если я все правильно понимаю, то вроде все правильно. Но почему-то ничего не работает. Права на папку где лежат скрипты 777.
Я уже по всякому попробовал и /bin/bash в crontab убирал, поскольку как я прочитал, если в начале скрипта стоит #!/bin/bash , то это не нужно.
- Вопрос задан более трёх лет назад
- 41542 просмотра
Все нашел ответ на свой вопрос:
1) Кронтаб нужно запускать так: sudo crontab -e — это нужно чтобы cron запускал скрипты из под root.
2) Инструкции для cron должны быть такими. Нужно обязательно писать bash перед указанием пути к скрипту. После указания пути к скрипту дописать >/dev/null 2>&1
Пример:
3) Сами скрипты действительно должны быть лишены sudo, так как и так запускаются из под пользователя root.
Пример:
Можете объяснить что значит: >/dev/null 2>&1
У меня прописано сейчас вот так:
00 16,18,20,22 * * * garanty /home/garanty/www/garancy.finexpert.pro/ftpset.sh 2>/home/garanty/www/garancy.finexpert.pro/tmp/logscron.txt
Не запускается, хотя в логах пишет, что все нормально.
2>/home/garanty/www/garancy.finexpert.pro/tmp/logscron.txt — эта штука должна записывать в файл logscron.txt ошибки если они будут?
> Можете объяснить что значит: >/dev/null 2>&1
stdout — в /dev/null, stderr — туда же, куда stdout
Источник
В Linux Mint 14 запуск скрипта из Startup Applications не работает, но из терминала работает
Я создал скрипт для настройки планшета Intuos в начале сеанса:
который я сохранил как
/bin/.wacomsetup.sh запустив chmod a+x
/bin/.wacomsetup.sh . Проверка свойств показывает, что это разрешено запускать как программу, но моя учетная запись пользователя может только чтение / запись в файл.
Я подтвердил, что он работает, когда я запускаю его из терминала, используя sh
/bin/.wacomsetup.sh , но когда я указываю путь в качестве записи команды в новой записи в Startup Applications (это относится к Cinnamon?), Он не запускает скрипт после входа в систему / перезапуска (я должен запустить его вручную).
Изменить программу запуска:
Название: Setup Wacom Intuos
Команда: sh
/bin/.wacomsetup.sh
Комментарий: ksdfk
Существуют ли другие разрешения, которые необходимо применить к сценарию, чтобы он мог запускаться при запуске таким образом?
Спасибо
(Я был бы признателен, если бы кто-то мог пометить этот вопрос более подходящим образом, если есть лучшие теги.)
2 ответа 2
Несколько вещей, чтобы попробовать:
» в пути в Startup Applications абсолютным путем к вашей домашней папке (например, /home/whateveryourusernameis )
Удалите sh в пути, поскольку это не необходимо; до тех пор, пока скрипт является исполняемым (с битом «x», установленным в DACL для вас), символ #!/bin/sh в начале сценария обнаружит, что это сценарий оболочки, и автоматически запустит интерпретатор оболочки для выполнения команд.
Попробуйте переместить сценарий в /usr/bin что делает его мир для чтения и выполнения, а также настройки Command: в приложениях Startup просто wacomsetup.sh Хотя я сомневаюсь, что этот шаг необходим, потому что запускаемые приложения запускаются под вашей учетной записью после входа в систему, и Xorg уже должен быть запущен .
Просто чтобы убедиться, что проблема не в том, что скрипт выполняется, а команды по каким-то причинам не выполняются: вверху скрипта под #!/bin/sh line, попробуйте добавить: echo scripted >
/scripted (измените часть «scripted», если у вас уже есть файл с таким именем для какого-либо другого использования). Затем убедитесь, что файл не существует, затем выйдите из системы / войдите в систему и посмотрите, пишет ли он этот файл. Если нет, скрипт даже не запускается. Если вы действительно видите этот файл, значит, скрипт выполняется, но вызовы xsetwacom не выполняются.
Источник
Скрипт на Linux не работает на Windows
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Почему работает на Linux, но не работает на Windows или аномалии wi-fi адаптера
Из заголовка, уже возникает вопрос а такое вообще возможно? Купил на днях usb wi-fi адаптер, не.
Почему скрипт работает на Windows 7, но не работает на Windows XP?
Всем привет! Подскажите пожалуйста, где ошибка? На Win7 скрипт отрабатывает, на WinXP.
Скрипт в Windows XP работает правильно, а в Windows 7 — неправильно
Здравствуйте! Проблема следующая, в Windows XP скрипт отрабатывает правильно: Распаковывает архив.
На WINDOWS работает, на LINUX нет
Есть программа — сервер. WebServer::WebServer(QObject *parent) : QTcpServer(parent) < .
DobroAlex, Как раз таки на винде и не работает. Писался тест на Linux
Добавлено через 9 минут
Добавил в код питона принты. в out содержатся какие-то символы: [b'».» \xad\xa5 \xef\xa2\xab\xef\xa5\xe2\xe1\xef \xa2\xad\xe3\xe2\xe0\xa5\xad\xad\xa5\xa9 \xa8\xab\xa8 \xa2\xad\xa5\xe8\xad\xa5\xa9\r\n’, b’\xaa\xae\xac\xa0\xad\xa4\xae\xa9, \xa8\xe1\xaf\xae\xab\xad\xef\xa5\xac\xae\xa9 \xaf\xe0\xae\xa3\xe0\xa0\xac\xac\xae\xa9 \xa8\xab\xa8 \xaf\xa0\xaa\xa5\xe2\xad\xeb\xac \xe4\xa0\xa9\xab\xae\xac.\r\n’]
Добавлено через 42 секунды
Код программы С++
Решение
Итак, я разобрался.
Проблема заключалась в различных командах запуска исполняемого файла на разных ОС. Для запуска на Windows 10, изменил test(‘./test 12 18’, 0, [ 30 ]) на test(‘test.exe 12 18’, 0, [ 30 ])
Интернет перестал работать в Linux — работает в Windows.
Есть локальная сеть из разных компов (ноутбуки и стационарые) под Ubuntu 10 и 11, Windows XP, 7 -.
Не работает скрипт в Windows 7 64-bit
Написал следующий скрипт WScript.Echo(fileNameWallpaper()); //Функция возвращающая имя файла.
На Windows результат на несколько единиц меньше от правильного; на Linux все работает как нужно
Вот программа, которая переводит введенные цифры в целое число, почему на виндовсе результат на.
QFile.open() под Linux работает, под windows нет
QDateTime dt = QDateTime::currentDateTime(); logfilepath = «log_» + dt.toString() + «.txt»; .
Моноблок не видит второй монитор под Windows, при этом под Linux работает
Всем доброго, Такой вопрос, есть моноблок Lenovo Ideacentre AIO 720 (Core i5-7400 с.
Установка Qt на Linux для кросс-компиляции: Linux 32/64 Windows 32/64
В силу объективных причин пришлось перейти на Linux, но столкнулся с проблемой установки окружения.
Источник