перезапуск скрипта при загрузке в Screen/tmux

У меня есть скрипт, который работает в ДОТ нете, что отлично работает при запуске через Putty - либо на экране или в tmux.

Однако я пытались в общей сложности более 8 часов, чтобы заставить его работать с systemd или кронтаб, но это не похоже на работу.

Когда я запускаю его в cron или с помощью systemd, скрипт не запускается или работает.

Это скрипт:

#!/Бен/ш
Эхо ""
Эхо "работает NadekoBot с автоматический перезапуск и обновление до последней сборки!"
корень="/корень"
ютуб-дл -у

сон 5С
а :; кд "$/корень NadekoBot" && dotnet ограничителя восстановить && dotnet ограничителя построить-конфигурации release && компакт-диск "$/корень NadekoBot/в src/NadekoBot" && dotnet ограничителя запуска -выпуска с & и CD "$корень" && утилита wget -Н https://github.com/Kwoth/NadekoBot-BashScript/raw/1.4/nadeko_installer_latest.sh && Баш "$root/nadeko_installer_latest.sh"; сон 5С; сделано
Эхо ""
эхо "это не сработало? Пожалуйста, сообщите в #NadekoLog серверу рознь".
сон 3С

компакт-диск "$корень"
Баш "$root/linuxAIO.sh"
Эхо "готово"

РМ "$root/NadekoARU_Latest.sh"
выход
+247
Giovanne Mar 15 сент. 2016 г., 18:52:01
40 ответов

Это приводит меня к мысли, что возникла проблема с написанием изменить пароль в файл Shadow. Что, вероятно, связано с корнем только с доступом на запись. И код работает, когда я запускаю его от имени root.

Это правильное предположение

Да. /и т. д./тень - это только запись root, поэтому ваша программа будет работать только тогда, когда он имеет права root.

Или есть другие варианты, как создание определенного пользователя только с правами на запись в файл Shadow?

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

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

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

+997
Priyanka Uddandarao 03 февр. '09 в 4:24

Я работаю со скриптами, что вывод XML и я с помощью xmllint для форматирования выходных данных. Xmllint требует исходный аргумент, поэтому я использую дефис в трубы стандартный выход к нему:

$> script.php source.txt | xmllint --формат - > nice_output.xml

Так как я запускаю эти скрипты совсем немного, я хотел бы повернуть xmllint --формат - часть в одну команду, что я могу трубу, но я не знаю как даже начать. Я хотел бы сделать это:

$> script.php source.txt | nicexml > nice_output.xml

Где nicexml мои пользовательские команды/псевдоним. Как мне это сделать?

+939
user3581 27 янв. 2019 г., 00:49:20
Другие ответы

Связанные вопросы


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

найти . -параметр maxdepth 1 -имя PYRLLPS_GL_201610D2* опции-mtime -30

Если вы хотите, чтобы найти файл по имени, как PYRLLPS_GL_201610D2AAAA ,вам нужен код:

найти . -параметр maxdepth 1 -имя 'PYRLLPS_GL_201610D2*' опции-mtime -30
+921
Sergey Z 1 сент. 2010 г., 18:40:21

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

#!/бин/Баш
хоста -з
Эхо -э "процесс:\Т$(pgrep "$(базовое имя $0)")"
Эхо -э "$(ПС-АФ | команда grep "$(pgrep $(базовое имя $0))" | у awk '{печати "процессор:\т\т"$7}')"
+887
user1959075 24 янв. 2014 г., 14:05:55

Калифорния является авторитетом. Ни больше, ни меньше. Это не совсем связано с сервером.

ЦС - в определенной степени - очень большой босс. Калифорния (выше)> сервер(ы) > клиент(ы).

Кроме того, если ваши клиенты смогут подключить 2 сервера, без исключений и так далее, использовать только один ЦС. Это вполне нормально.

+818
Tyzoid 8 янв. 2017 г., 23:44:13

Вы можете использовать команду grep в расширенном режиме регулярного выражения вроде этого:

эхо-на-examplename-01 | грэп -Е '^[а-Z]{2,3}-[а-з]+[0-9]*-[0-9]+$'

Вы должны использовать параметр Interval, чтобы сделать это более легким для чтения. [а-я][а-я]|[а-я][а-я][а-я] будет [а-Z]{2,3}.

[а-Z]+ такой же, как [А-я][а-з]*

Для поиска snytax, взгляните на https://www.gnu.org/software/findutils/manual/html_node/find_html/grep-regular-expression-syntax.html

+809
Gauri Chudekar 28 апр. 2015 г., 08:40:48

Я строю защищенном сервере (Дебиан с GUI) для операций в автономном режиме подписи. Мне не нужен доступ в интернет. Однако я бы хотел, чтобы автоматически обновить мою систему. Как я могу добиться этого?

+779
AlphaDaemon 30 дек. 2013 г., 03:51:31

Я использую TMOUT=10 - 10С для обновления времени в строку, это вызвало прокрутки всегда вернуться к текущей строке. Для меня.е: если я прокрутки страницы serverl выходных после 10 секунд позже, ЗШ прокрутите вниз, когда запрос был сброшен.

Как избежать этой проблемы?

+739
MRPhase 26 дек. 2018 г., 18:08:25

Вы можете также использовать каталог с читать

читать ФОО
Эхо "$(каталог "$ФОО")./"

и каталог с помощью команды xargs.

Эхо "$(размер имя_каталога)./"

Пример использования функции:

$ Магия() { Эхо "$(размер каталог)./"; }
$ Эхо 'реж/фу | магических
реж./
+688
tomerg 13 окт. 2015 г., 20:31:20

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

найти *.формат JPG | команды xargs -N 5-и конвертировать {} -добавить {#}.ПНГ

Это очень близко, но {#} не выводить текущее количество строк не. Это возможно с помощью команды xargs?

+682
Ms Jackson 15 сент. 2011 г., 07:00:55

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

судо ./killscript.sh <идентификатор процесса>

Есть еще один способ сделать это, но я не рекомендую этого делать, это сделает серьезную проблему безопасности, и если оно используется неправильно это принесет большие проблемы.

использовать функцию setuid на убить инструмент, но вы должны быть суперпользователем:

команду chmod 4755 /bin и/убить

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

+668
Brice Bentler 11 мая 2019 г., 21:09:17

желаю компании TCL может решить это легко

#!/usr/Бен/ОКР wish8.5

набор intervalms 1
переменная часовой

setclock прок {} {
 глобальные intervalms часовой
 набор Микрос [часы микросекунд]
 набор эпохи [выражение $Микрос / 1000000]
 набор Микрос [формат "%06d" [выражение $Микрос % 1000000]]
 установить часовой стрелки, формат $эпохи -формат "%А %Б %Д %Г %ч:%м:%с.$Микрос"]
 после $intervalms [setclock список]
}

шрифт создать TtyFont -семейный Курьер -размер 16 -вес жирный
пакет [метка .часы -шрифт TtyFont -textvariable часовой]

сетки .часы -строка 1 -столбец 1
сетки rowconfigure . 1 -Вес 1
сетки columnconfigure . 1 -Вес 1

ВМ геометрии . 400x60+0+0

setclock

Но если раздражает - это ваша цель...

+663
Rituja Mokal 14 янв. 2019 г., 12:13:06

Я не могу найти полезную информацию, как легко удалить все Грофф (почитайте) связанные метки форматирования. unroff не кажется, чтобы сделать работу. На Mac OS я не могу видеть.

+644
kdMinW 4 сент. 2011 г., 08:01:58

В ищу хороший набор почта/контакты/календарь .и т. д. приложения, я пробовал в KDE в Kontact и нарвался на следующую проблему, при запуске почти любых приложений в комплекте (в KMail, korganiser .и т. д.). Приложение будет отображать на экране загрузки, как изображение 1, а затем он будет отображать ошибки в изображении 2, заявив В работающие личной информации Управление услугами не работает. или что-то в этом роде.

Изображение 1: loading...

Рис. 2: Error

Вот моя информация о системе, как это предусмотрено screenfetch:

 ОС: КДЕ неон 5.12
 Ядра: архитектуру x86_64 Линукс 4.13.0-45-универсальный
 Время работы: 4ч 37М
 Пакеты: 2060
 Оболочка: Баш 4.3.48
 Разрешение: 1280x800
 Де: 5.47.0 в KDE / плазма 5.13.1
 ВМ: Квин
 Тема ГТК: ветер [комплекта библиотек GTK2/3]
 Тема значков: Бриз
 Шрифт: Ното Санс Регулярно
 Процессор: Intel Сердечником2 и Duo P8700 @ 2х 2.534 ГГц [36.0°с]
 Процессор: Процессор Intel
 Оперативная память: 1802MiB / 2946MiB

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

Я уже спас самопроверки отчета файл на моем рабочем столе и впоследствии забыл про него (редакциях мое).

+624
Belinda Wood 16 мар. 2010 г., 20:31:39

Во-первых, что

nnoremap <с-с> <молчун> <с-с>

имеет <молчун> параметр в неправильном положении; он работает, но не так, как вы думаете он делает (и пищит). Лучше использовать это:

nnoremap <с-с> <НОП>

Чтобы избежать включения при прерывании Р, определить специальное отображение для этого тоже:

nnoremap Р<С-С> <НОП>
+574
Greg Domjan 19 окт. 2014 г., 16:55:50

Предполагая, что столбцы 1 и 2 не имеют пробелы в своих записях, вы также можете сделать:

на awk -F"и\Т" '$3 == "76" { печать $1"\Т"$2}' ../тест/*/labels.txt |
 пока читала б; делать ./построить.октября $в $б; сделано
+552
Nathan L 8 июн. 2013 г., 17:48:00

У меня Manjaro, Я сжать ее раздела, изменил таблицу разделов в GPT-диск (с MBR), установлен Windows 7 в пространство слева от усадки. Загрузчик Windows работала нормально. (Все до этого момента работало нормально и я не имел никаких проблем)

Я установил жратвы. Manjaro загружается нормально, но когда я загрузиться в Windows, графика перепутано и размыто, я помещу фото, как я не могу точно объяснить.

Я использую UX410U ноутбука Asus, которая имеет NVIDIA серии GeForce MX130. (Я подтвердил, что через команду lspci тоже)

(вы также можете увидеть значок мыши покрыты случайных полос и повторяются через экран) picture

+532
Derek Howze 21 нояб. 2013 г., 16:48:43

Это выход правильный?

 1.056000 е+0 5.000000 Е-1 2.454400 Е-3 2.914800 е-2 8.141500 е-6
 2.043430 Е+1 5.000000 Е-1 2.750500 Е-3 2.698100 е-2-2.034300 е-4
 3.829842 Е+1 5.000000 Е-1 1.969923 е-2 2.211364 е-2 9.499900 е-6
 4.168521 Е+1 5.000000 Е-1 1.601262 е-2 3.030919 е-2-3.372000 е-6
 6.661784 Е+1 5.000000 Е-1 5.250575 е-2 3.443669 е-2 2.585500 е-5
 7.278104 Е+1 5.000000 Е-1 2.137055 е-2 2.601701 е-2 8.999800 е-5
 9.077287 Е+1 5.000000 Е-1 1.320498 е-2 2.961020 е-2-1.011600 е-5
 9.248130 Е+1 5.000000 Е-1 3.069610 Е-3 2.786329 е-2-6.317000 е-5
 1.049935 е+2 5.000000 Е-1 4.218794 е-2 3.321955 е-2-5.097000 е-6
 1.216283 е+2 5.000000 Е-1 1.432105 е-2 3.077165 е-2 4.300300 е-5

Код:

на Perl -лне с/(\.\д+)(\+|\-)/\1е\2/г; печати образец

Объяснение:

  • -лне позаботиться об окончаниях строк, процесс каждой входной строке выполните следующий код

  • с/(\.\д+)(\+|\-)/\1е\2/г:

    • замена (ы)
    • (.\д+)(\+|\-) найти две группы (точки и числа) и (плюс или минус)
    • \1е\2 заменить их с первой группой, то е потом вторая группа
    • г во всем мире - не останавливаться при первой замене в каждой линии, но процесс все возможные хиты
  • печать печать строки

  • пример входного файла

Этот добавляет пространства, если он отсутствует. На самом деле он ставит пробел между цифрами независимо от. Т. е. если были в каком-то случае два пробела, там будет только одна в выходной.

на Perl -лне с/(\.\д+)(\+|\-)(\д+)(\х*)/\1е\2\3 /г; печати образец

Большинство из них похож на предыдущий. Новая вещь является выражение(\D+) Группа НР 3 и (\х*) группа номер 4. * здесь означает необязательно. В замене нет \4 используется. Там вместо пробела.

Вывод таков:

 1.056000 е+0 5.000000 Е-1 2.454400 Е-3 2.914800 е-2 8.141500 е-6 
 2.043430 Е+1 5.000000 Е-1 2.750500 Е-3 2.698100 е-2 -2.034300 е-4 
 3.829842 Е+1 5.000000 Е-1 1.969923 е-2 2.211364 е-2 9.499900 е-6 
 4.168521 Е+1 5.000000 Е-1 1.601262 е-2 3.030919 е-2 -3.372000 е-6 
 6.661784 Е+1 5.000000 Е-1 5.250575 е-2 3.443669 е-2 2.585500 е-5 
 7.278104 Е+1 5.000000 Е-1 2.137055 е-2 2.601701 е-2 8.999800 е-5 
 9.077287 Е+1 5.000000 Е-1 1.320498 е-2 2.961020 е-2 -1.011600 е-5 
 9.248130 Е+1 5.000000 Е-1 3.069610 Е-3 2.786329 е-2 -6.317000 е-5 
 1.049935 е+2 5.000000 Е-1 4.218794 е-2 3.321955 е-2 -5.097000 е-6 
 1.216283 е+2 5.000000 Е-1 1.432105 е-2 3.077165 е-2 4.300300 е-5 
+510
erans 14 дек. 2017 г., 12:26:29

С программой ntpdate:

активация -д 0.debian.pool.ntp.org

Или для смещения только:

активация -д 0.debian.pool.ntp.org | СЭД -N 'ы$/.*смещение //Р'
+498
jon doe 17 февр. 2017 г., 13:10:38

Можно ли использовать функциональность клавиатуры X переназначить две кнопки для разных ключей?

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

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

Это стало возможным с помощью этого замечательного настройщика приложения под OSX. Однако я планирую установить Debian на моей машине, учитывая, что большинство продавцов/разработчиков отказываются от 32-битной машины на OSX.

+480
user106622 24 июн. 2015 г., 07:39:47

- это сокращение для Escape-символ. в <ESC> и[ И М являются маркерами начала и конца назначения цвета ANSI управляющие последовательности, которые представляют собой подмножество ANSI терминал управления секвенирован. Большинство из них начинаются с <ЕЅС>[, за которой следует число, за которым следует буква, указывающая, какие функции реализуется (напр. г. перемещение курсора в строке; очистить до конца строки, возврата курсора к сохраненному местоположению и т. д.).

+455
wai Yan 2 окт. 2012 г., 22:57:46

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

Для EG. 1. Проверка и устранение проблем НТП 2. Проверка и устранение неполадок НФС 3. Установить .пакет RPM 4. Использование дискового пространства 5. Проверить Утечку Памяти 6. Высокая загрузка процессора 7.

Нужна помощь от участников форума 1. Вы можете, пожалуйста, подсказать есть ли такая программа скрипт уже существует 2. Был бы такой скрипт будет использовать для системного администратора 3. Какие функции/опции могут быть включены в сценарий

+418
BoLIIkA 2 окт. 2011 г., 04:23:18

Я всегда думал, что дочерний процесс будет в той же группе процессов родительский процесс. Но я читал следующее Здесь:

если вы запустите some_app из оболочки, оболочка создает новый процесс группа для нее, и делает, что на переднем плане процесс группы сессии.

Я сделал Баш выполнение кошку, и я узнал, что кот действительно имеет другой ID группы процессов, чем Баш. Это Баш только поведение у ребенка процесс быть в другой группе?

+404
MetricDynamo 6 окт. 2012 г., 07:25:38

В { до $. Она должна быть ${версия} :)

+383
niklas sorgenfrei 10 авг. 2014 г., 04:25:42

Бы найти (и конечно без) либо помогать вам?

+366
user29281 30 июл. 2015 г., 18:27:42

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

+352
That Nobody 3 февр. 2011 г., 06:27:09

Что бы я сделал :

найти папку -имя "подпапку[0-9]*" -exec для ПМ -Р {} \;

с помощью

или

найти \ папку (имя- 'фу' -о-имя 'бар' -о \ имя базы') - экзек ПМ -Р {} \;
+329
Fibo 8 окт. 2014 г., 01:23:17

Два шага:

$ судо -я
# Су - Постгреса

Как корень, можно использовать Су без пароля. Вы также можете комбинировать эти

$ судо Су - Постгреса
+301
Heather Peterson 3 мая 2017 г., 10:29:31

Если вы используете !! только в контексте судо !!, вы можете задать сочетание клавиш для (Ctrl+С), который добавляет на ваш sudo команду:

prepend_command функции 
 комплект -л добавить $массива argv[1]
 если тест -з "$подставляла"
 Эхо "prepend_command должен один аргумент".
 возвращение 1
конец

 комплект -л cmd (в командной строке)
 если тест -з "$УМК"
 командная строка -реалов истории[1]
конец

 комплект -л old_cursor (командная строка -с)
 командная строка -с 0
 командная строка -я "$подставляла "
 командная строка -с (математика $old_cursor + (Эхо $подставляла | туалет -с))
конец

Это позволяет вводить в любую команду и начало суда во время набора текста или как в вашем случае, как подмена судо !!

Увидеть ахти комментарий на GitHub обсуждение

+281
MattCrow 22 апр. 2017 г., 17:48:01

В моем предыдущем вопрос как ядра планировщика знать, как упредить процесс? Мне дали ответ на то, как упреждение происходит.

Теперь мне интересно, как планировщик ядра знать, что интервал прошел? Я читал на решение аппаратного таймера, который имеет смысл для меня, но потом я прочитала, что большинство современных операционных систем (например, Windows, Linux и т. д.) делать не использовать аппаратные таймеры, а программные таймеры.

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

+261
Ydrasaal 19 авг. 2014 г., 02:36:21

[корень@Сатиш:~/рабочий стол]$ чтопроисходит в Linux

Линукс: ничего подходящего.

+227
Amr Saleh Rooosy 11 дек. 2019 г., 14:10:28

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

#!/usr/Бен/ОКР вместо python2
# - *- - кодирования: в ASCII -*-
"""parse.py"""

импорт Сыс
импорт заново

экстракт деф(строку):
 """Удаляет текст между delimters формы `|Start` и `|стоп`
 где начало одной буквы ASCII и остановка следующий последовательный
 ASCII-символ (например, `|` и `|Б` если Start=A и стоп=B или
 `|X` и `|Г` если начать=X и стоп=г)."""

 # Найти открывающий разделитель (например, '|' или '|б')
 start_match = ре.поиск(Р'\|[А-я]', строка)
 start_index = start_match.начать()
 start_letter = строка[start_index+1]

 # Найти соответствующий закрывающий разделитель
 stop_letter = ЧР(ОГА(start_letter) + 1) 
 stop_index = строка.найти('|' + stop_letter)

 # Извлечь и вернуть подстроку
 подстрока = строка[start_index+2:stop_index]
возвращение(подстрока)

деф удалить(строка):

 # Найти открывающий разделитель (например, '|' или '|б')
 start_match = ре.поиск(Р'\|[А-я]', строка)
 start_index = start_match.начать()
 start_letter = строка[start_index+1]

 # Удалить все вплоть до открытия разделитель
 строка = строка[start_index+2:]

 # Удалить нужные подстроки, которые происходят после разделителя
 строка = ре.суб(р'\|[а-Z]?', ", строку)

 # Возвращает обновленную строку
возвращение(струна)

если __имя__=="__основной__":
 input_string = Сыс.устройства stdin.с readline()
 Сыс.поток stdout.писать(экстракт(input_string) + '\Н')
Сыс.поток stdout.писать(удалить(input_string))
+196
Ben Gabbard 18 дек. 2014 г., 21:38:41

Я хотел бы использовать на awk, где можно указать разделитель записей. Если запись разделитель "конец" (на отдельной строке), а затем искать записи, содержащие "бар":

на awk 'начало {РС = РПР = "\усилиям nend смогла\п"} file.txt /бар/' 

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

на awk '
 Начать {РС = РПР = "\усилиям nend смогла\п"} 
 {подпункт(/^.*\пчтобы начать\Н/, "начало\п")} 
/бар/
'file.txt

Это может не дать желаемых результатов, если "пуск" может появиться более чем один раз до конца

фу
Начать
привет
Начать
бар
мир
Конец
баз

будет выводить как

Начать
бар
мир
Конец
+182
kolobok 22 авг. 2012 г., 16:29:17

Некоторое время назад я установил проприетарные FoxitReader , чтобы использовать его для примечания в PDF. Я не использую это сам - я проверял его для использования. Но я все-таки установили.

Я использую gscan2pdf для сканирования в PDF. Это мой выбор по умолчанию для сканирования.

После установки FoxitReader (я не помню как долго), я заметил следующее любопытство. Когда я Сохранить файл сканируется на gscan2pdf на диск, FoxitReader открывает сам файл открыть. Я не знаю, что может быть причиной этого. Я уверен, что я не написал ни одного сценария, чтобы сделать так, и не могу я придумать любую причину, я бы сделал так, поскольку я на самом деле не использовать FoxitReader.

Я хотел бы знать, почему это происходит, отчасти из-за простого любопытства, а отчасти потому, что я хотел бы, чтобы остановить это поведение.

+161
Ron Sismaet 10 июн. 2018 г., 05:04:30

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

Простой рядный реализации сериализации одной или нескольких переменных

Да, как в bash и zsh можно сериализовать содержимое переменной таким образом, что легко получить, используя верстал встроенные и -п аргументов. Формат вывода такова, что вы можете просто источником , на выходе получите свои вещи обратно.

 # У вас есть переменная(с) $Foo уже и $Bar с вашим материалом
 верстал -Р Василий Пупкин > ./serialized_data.sh

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

# Загрузить сериализованных данных в текущей оболочке
источник serialized_data.sh

Это будет работать для bash, zsh и КШ в том числе передачу данных между различными снарядами. Баш будет перевести это на встроенной объявить функцию, а ЗШ реализует это верстал , но как Баш псевдоним для этой работы в любом случае Для мы используем верстается здесь КШ совместимости.

Более сложные обобщенные реализации с использованием функции

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

Обратите внимание, что для всех из них, в целях поддержания Баш/ЗШ кросс-совместимости мы будем фиксации обоих случаях верстал и заявить, поэтому код должен работать в одном или обоих снарядов. Это добавляет какой-то Навальный и беспорядок, которые могли бы быть устранены, если вы были делаю это только для одной раковины или другой.

Основная проблема с использованием функции для этого (или в том числе код в другой функции) заключается в том, что верстал функция генерирует код, который, когда поступает обратно в скрипт внутри функции, по умолчанию создает локальную переменную, а не глобальный характер.

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

сериализовать() {
 верстал -П "$1" | СЭД -е '0,/^(верстал|декларирования)/{с/ / г /}' > "./serialized_$1.ш"
}
десериализовать() {
 источник "./serialized_$1.ш"
}

Обратите внимание, что фанки СЕПГ выражение, чтобы соответствовать только первое вхождение либо 'верстка' или 'объявление' и добавить в качестве первого аргумента. Надо искать только первое вхождение, потому что, как Стефан Chazelas правильно заметили в комментариях, в противном случае это будет также соответствовать случаях, когда сериализованная строка содержит литерал строки, за которым следуют слова объявлять или верстал.

В дополнение к исправлению мой первоначальный анализ бестактность, Стефан также предложил менее ломкими способ взломать эту, что не только побочные действия проблемы с парсингом строк, но может быть полезным крюк, чтобы добавить дополнительные функции с помощью оберточной функции для переопределения действий, когда исходные данные. Это предполагает, что вы не играете в другие игры с объявить или верстал команды, но этот метод будет легче реализовать в ситуации, где вы были, включая эту функцию как часть другой функции на свой собственный, или вы были не в состоянии контролировать данные, пишется и будет ли она флаг добавил. Нечто подобное может быть сделано с псевдонимами, см. Жиль ответ для осуществлению.

Чтобы сделать результат еще более полезным, мы можем пройтись по нескольким переменные, передаваемые в наши функции, предполагая, что каждое слово в массиве аргумент представляет собой имя переменной. Результатом становится что-то вроде этого:

сериализовать() {
 для VAR на [email protected]; делать
 верстал -п "$ВАР" > "./serialized_$var.sh"
сделано
}

десериализовать() {
 объявить() { встроенная заявляю-г "[email protected]"; }
 верстал() { встроенная верстал -г "[email protected]"; }
 для VAR на [email protected]; делать
 источник "./serialized_$var.sh"
сделано
 снятие -Ф объявить верстал
}

С либо решение, использование будет выглядеть так:

# Загрузить некоторые тестовые данные в переменные
Фу=(массив или что-то)
Бар=$(аптайм)

# Сохранить его в сериализованных данных
сериализовать Foo бар

# Для тестирования неопределенные переменные, чтобы нам знать, если он работал
снятие Foo бар

# Загрузить данные из файлов данных 
десериализовать Foo бар

Эхо "фу: $ФОО\нбар: $бар"
+143
kongo09 5 дек. 2019 г., 20:01:55

У меня есть следующие строки в мой файл Makefile:

ВАР := $(вроде $(foreach для М$(библиотеки),$($(м)-цели)))

что я изменил: она теперь использует родом из оболочки:

ВАР := $(Shell в эхо $(по каждому элементу м,$(библиотеки),$($(м)-цели)) | тр '' '\п' | СНП | тр '\п' '' )

Но получается, что после моей модификации $(ВАР) остается пустым. Что я сделал не так?

Редактировать: Я пытался заменить гну-сделать своего рода встроенные в bash, потому что я хотела иметь больше гибкости в процессе сортировки. Оказалось, что выход из foreach-это странно. Я воспроизвел проблему с файл Makefile следующего содержания:

а-параметр obj := ННН ллл
б-параметр obj := ззз ААА
х := а + б
ХХ := $(Shell в Эхо $(foreach для М$(Х),$($(М)-параметр obj)) | тр '' '\Н' | сортировка)
гг := $(вроде $(foreach для М$(Х),$($(М)-параметр obj)))

все:
 @Эхо $(ХХ)
 @Эхо $(ый)

которая дает ожидаемый результат:

$ сделать
ллл ННН ААА ззз
ллл ННН ААА ззз

Извините, что беспокою вас.

+99
Gabriel Medeiros 19 янв. 2020 г., 01:50:42

setenv принадлежит (Т)хсг, а не bash, которая является оболочкой по умолчанию в CentOS. Использовать вместо экспорта. Реф : Баш setenv команда не найдена

Тогда учитывая, что у вас будет вход MY_VARIABLE=значения MyValue

Эхо -Н "введите строку ОКР"
читать ОКР
Эхо-экспорт "$ОКР" >> $дома/.файл
. $Дома/.файл

Редактировать : я изменил мой код, как и прежний, не экспорт env, чтобы все Баш считая оболочки. На этот раз будет, но переменная в файл bash_profile, который выполняется каждый раз при открытии Баш.

+86
Nirmal Punjabi 11 нояб. 2018 г., 01:10:08

Просто установите размер экрана с расширения xrandr --FB в (НЕТ --режим, --преобразование, что угодно).

$ расширения xrandr --FB в 800x768

xrandr поближе будет жаловаться на размер экрана слишком маленький, но и применить настройки, тем не менее.

Пример:

$ расширения xrandr --FB в 1520x1080
расширения xrandr: указанный экран достаточно 1520x1080 не большие на выход VGA-0 (1920х1080+0+0)
Ошибка х неудачных запросу: BadMatch (неверный параметр attributes)
 Крупные операции не удалось запросу: 140 (RANDR)
 Незначительные операции невыполненных запросов: 29 (RRSetPanning)
 Серийный номер не удалось-запрос: 43
 Текущая серийный номер в выходной поток: 43

# от xtruss выход
--- ConfigureNotify(событие=ш#000004A8, окна=ш#000004A8, х=0, У=0, ширина=1520, высота=1080, бордюр-ширина=0, выше-брат=нет, переопределить-перенаправление=ложь)

$ xwininfo -корень | грэп гео
 -геометрия 1520x1080+0+0

Что, вероятно, следует предупреждение, а не ошибка; есть ситуации, где это имеет смысл, чтобы установить размер экрана, чтобы что-то меньшее, чем реальное отображение(ы).

Обновление:

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

Для временного решения проблемы можно было бы предотвратить с помощью xrandr поближе и модуль расширения с помощью LD_PRELOAD взломать. Что может быть улучшено поворотом манекен функции в фантики, что обрезать вернулся прямоугольники.

Этот работал для меня на ванильный дебиан 9.5 с мате окружение рабочего стола и либо языка или gdm3 отображения диспетчера:

корень# apt-получить установку приятель-рабочий стол-окружения языка
корень# apt-получить установку НКУ

корень# кот <<'СРВ' | чч -спос -х с - -Общий -о в /etc/Х11/no_xrr.так
инт XineramaIsActive(недействительными *д){ вернуть 0; }
пустота *XineramaQueryScreens(недействительными *dpy, инт *Н){ *П = 0; возврат 0; }
инт XineramaQueryExtension(недействительными *д, инт *я, инт *к){ вернуть 0; }
инт XRRQueryExtension(недействительными *д, инт *я, инт *к){ вернуть 0; }
СРВ

корень# кот <<'мостовые' >в/etc/Х11/xsession теперь.д/98-no_xrr
экспорт LD_PRELOAD=/и т. д./Х11/no_xrr.так
случае $автозагрузки в
/usr/Бен/СШ-агент*)
 Запуск="/usr/Бен/SSH-агента ОКР LD_PRELOAD=$LD_PRELOAD ${запуска#* }";;
эсок
СРВ

Потом, от сеанса меню Перевод выбрать "напарника", и как зарегистрированный пользователь:

$ LD_PRELOAD= расширения xrandr --FB в 800x768

Я не смог заставить его работать, хотя с плазменным или gnome3/гном-Шелл/бурчать еще.

+54
mishsx 15 янв. 2016 г., 23:13:55

Поддержка {Вар}>... был добавлен в ksh93, Баш и ЗШ в то же время по предложению ЗШ разработчика. В {ВАР}>... оператор работает в ЗШ, но не для сложных команд.

Также отметим, что пока в:

УМК 3>&1

ФО 3 открыта только для УМК, в

УМК {ВАР}>&1

Динамически выделяемый ФД (хранится в переменной$var) остается открытым после УМК возвращает в ЗШ и Баш. Этот оператор предназначен для использования с метод exec (см. Также sysopen в ЗШ для более простой интерфейс для открытой() системный вызов).

Так что ваш код отсутствует в exec {ТМП}>&- чтобы освободить, что ФД потом в Баш.

Поэтому здесь вы могли бы сделать:

если старпома {ТМП}>&1; затем
 ошибки=$(метод exec 2>&1 >&"$ТМП" {ТМП}>&- && ЛС-ЛД /х /ОГРН | тр ОЗ)
 метод exec {ТМП}>&-
интернет

Которая будет работать в Баш, ЗШ и ksh93 и не слить ФД. (кавычки вокруг $ТМП нужны только на гулянку и, когда его в POSIX опция не включена). Обратите внимание, что в ksh93 или когда ЗШ или Баш находитесь в POSIX-режиме, а не в exec вызывает консоли для выхода (ДУП() не может быть вызвана стандартный вывод закрываются или какой-то предел на количество открытых файлов достигнут или другие патологические случаи, для которых может потребоваться выход в любом случае).

Но здесь вам не нужно динамически выделяемой ФД, просто ФД 3, например, которая не используется в этом коде:

{ ошибки=$(ОТВ 2>&1 >&3 3>&-; ЛС-ЛД /х /ОГРН | ТР о Z); } 3>&1

Который будет работать в любой Бурн-как раковина.

Как в динамическом ФД подход, даже если это не так очевидно, если dup2()3>&1) не выполнено, задание не будет работать, так что вы можете убедитесь, что ошибки начинаются раньше (при отключенном -в ошибки например).

Обратите внимание, что это не имеет значения, является ли ФД 3 в противном случае открытых или используемых в остальной части скрипта (что оригинал ФД если открыть останутся нетронутыми и восстановлен в конце), что имеет значение, является ли код, встраиваются внутри $(...) ожидает ФД 3, чтобы быть открытым.

Только соб 0, 1 и 2 должны быть открытыми приложениями, других соб нет. лс и тр не ожидал ничего о FD 3. Случаях, когда вам может понадобиться использовать другой ФО, когда код явно делает что ФД и ожидает от него были открыты заранее, как если бы вместо ЛС, у тебя кошка как /dev/ФД/3 , где ФД 3, как ожидают, будет открыта для какой-то ресурс где-то раньше в скрипте.

Чтобы ответить на вопрос о том, как назначить первую бесплатную ФД в ракушках в POSIX, я не думаю, что есть способ с оболочка POSIX и коммунальные услуги в API. Она может тоже не имеет смысла. Раковина может делать то, что он хочет внутренне с любым ФД при условии, что не получает в свой собственный API. Например, вы можете обнаружить, что ФД 11 теперь бесплатно, но в дальнейшем могут быть использованы Shell Для что-то внутреннее и ты пишешь, чтобы это могло повлиять на его поведение. Также обратите внимание, что в POSIX SH, вы можете только управлять соб 0 до 9.

+44
Ivan Baller 14 июн. 2019 г., 14:24:39

Комбинация из трех фактов вызывает Оом проблема: маленький размер страницы, большие Вирт, pagetables. Журналы четко показывают, что почти все ОЗУ было использовано pagetables, а не по памяти процесса (например, не на страницы - это в основном выдавливается в своп).

Облом про архитектуру x86_64/x86 в pagetables заключается в том, что, когда у вас есть несколько процессов точно так же область разделяемой памяти, они держат отдельный pagetables. Следовательно, если один из процессов карты 1 ТБ (он включен в вирт) ядро будет создавать, скажем, 1 ГБ pagetables (не показано в верхней части на всех, а эти не считаются, принадлежащие процессу). Но если сто процессами карту же площадь 1 ТБ, они занимают 100 ГБ оперативной памяти с redunantly хранить метаданные!

Сумма Вирт в одном процессе может быть просто вызвана Открытие и mmaping файл (либо имени или "Анонимный"), хотя там может быть много альтернативных объяснений.

Я предполагаю, что убийца Оом не принимает размер pagetables во внимание, когда убив процесс. В вашем случае, видимо, в MongoDB является основным кандидатом на Оом убить с точки зрения использования ВИЭ. Несмотря на увеличение памяти будут незначительными, система не было выбора, так его убили, что его могли убить.

Самый очевидный способ избежать вашей проблемы могло бы быть использование больших страниц, если только в MongoDB поддерживает эти (я не предлагаю использовать прозрачный огромные страницы, вместо того чтобы рассмотреть ваниль непрозрачный больших страниц). Беглый поиск говорит, что, к сожалению, в MongoDB не поддерживает даже непрозрачные огромных страниц.

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

+31
user10039125 29 окт. 2016 г., 03:40:27

Показать вопросы с тегом

$200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil