“emacs: стандартный вход не является tty” при запуске Emacs при входе в систему

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

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

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

(Да, делая, который является большим заданием. Каждая часть его. Никто серьезный не скажет Вам, что представительное сравнительное тестирование является куском пирога.)

2
10.05.2014, 18:50
2 ответа
[118271] Ниже я анализирую ваш скрипт. Но сделав это, я думаю, что ответ на вопрос [118686], который вы должны были задать [118687] будет:
  • Запустите [119068]emacs --daemon[119069] из вашего [119070].profile[119071]. Это создаст фоновый экземпляр Emacs.
  • Запустите [119072]emacsclient FILENAME[119073], чтобы открыть файл в Emacs. При этом создаётся новое окно (либо окно X11, либо окно, использующее текущий терминал).
  • Загрузите файл [119074]EmacsHints[119075] в стартовый файл Emacs: поставьте [119076](find-файл "/home/Harry/emacs/EmacsHints. txt")[119077] в вашем [119078].emacs[119079].

    Мы не можем точно сказать, почему вы получаете [118694]t: Разрешение отказано[118695], так как вы не опубликовали скрипт, который вызвал эту ошибку (в опубликованном вами скрипте есть комментарий в строке 4). Но вы создаете временный файл в текущем каталоге; это плохая идея при любых обстоятельствах, и, вероятно, не работает, когда у вас нет разрешения на запись в текущем каталоге.
  • t: Если вам нужно создать временный файл, используйте
  • mktemp
  • . Однако, здесь временные файлы - это ненужное усложнение: используйте подстановку команд для хранения вывода команд в переменную.
  • Все это, в свою очередь, ужасно сложно - просто подключите вывод [118698]grep[118699] к [118700]wc[118701], и шаг awk ничего полезного не сделает.

    Более того, ваш тест ненадежен: когда файл [118702]EmacsHints[118703] открыт, иногда [118704]ps[118705] возвращает одну строку, содержащую [118706]EmacsHints[118707], иногда две: это зависит от времени процессов [118708]ps[118709] и [118710]grep[118711]. Вместо того, чтобы создавать свои собственные (которые не работают), используйте инструменты, предназначенные для этой цели:

    pidof

    или

    pgrep[12123].[12124]Voilà! Проще, и это действительно работает.[12125]Ну, это [118716]в основном [118717] работает. Если вы откроете файл [118718]EmacsHints[118719] в Emacs, не указав его в командной строке, это не будет обнаружено. Я бы предложил лучшее решение, но я не понимаю, чего вы пытаетесь добиться. Если Вы всегда хотите, чтобы файл [118720]EmacsHints[118721] был открыт в Emacs, откройте его из своего [118722].emacs[118723].[12126]Emacs немного медленно запускается, но многие пользователи (включая меня) настраивают его на запуск, когда Вы входите в систему, а затем никогда не выходите из нее. Запустите [118724]emacs --daemon[118725] из своего [118726].profile[118727]. Чтобы открыть файл в существующем экземпляре Emacs, вызовите [118728]emacsclient[118729].[12127]Что касается "стандартный вход не tty", то Emacs можно запустить в фоновом режиме только в том случае, если он открывает окно с графическим интерфейсом. Если вы запускаете Emacs в терминале, то он должен быть на переднем плане, иначе он не сможет получить доступ к терминалу. Если вы хотите запустить Emacs в фоновом режиме только в X:[12128]Кстати, в скрипте оболочки всегда кладите двойные кавычки вокруг переменных и подстановок команд: [118730] "$1" [118731], [118732] "$foo" [118733], [118734] "$(somecommand)" [118735] и так далее. Когда подстановка не находится внутри двойных кавычек, значение интерпретируется не как строка, а как список шаблонов глобуса. Эта проблема обычно проявляется в скриптах, которые не работают с именами файлов, содержащими пробелы. Если вы не понимаете, что все это значит, просто используйте двойные кавычки.[12129]Или вы можете просто использовать [118736]emacsclient[118737].[118295].
    3
    27.01.2020, 22:06
    [117162]Относительно этого сообщения:[12240]Первое говорит Вам, что Ваша команда:[12241]не имеет разрешений на запись файла [117848]t[117849] в любую директорию, в которой он находится во время выполнения. Лучше указать полный путь, я бы предложил использовать [117850]/tmp/t[117851] так:[12242]Другое сообщение:[12243]говорит вам, что у сценария нет доступа к TTY для отображения emacs. Для того, чтобы запустить такой инструмент, как [117852]emacs[117853] или [117854]vim[117855] таким образом, вам часто понадобится доступ к TTY устройству, чтобы вы могли получить доступ к его STDIN и STDOUT. [12244]Если вы в отчаянии или вас не волнует отсутствие STDIN/STDOUT, вы можете создать новый в вашем скрипте так:[12245]Есть и другие методы решения этой проблемы, смотрите этот SO Q&A под заголовком: [117856]Как запустить редактор из скрипта оболочки?[117857].[117175].
    0
    27.01.2020, 22:06

    Теги

    Похожие вопросы