Как выровнять таблицу дисплея приятно

крон

Вместо того, чтобы делать это как @reboot, что, если Вы реструктурировали вещи немного так, чтобы это было, говорит каждые несколько минут и сделало проверку, чтобы видеть, работал ли tmux уже, в противном случае затем назовите Ваш tmux_autostart.sh.

Пример

Каждые 5 минут, выполненных, чтобы видеть, если tmux_autostart.sh работает. Для начинающих тест как это будет видеть если tmux_autostart.sh произошел:

# down
$ ps -eaf|grep -q "[t]mux_autostart.sh"
$ echo $?
1

# up
$ ps -eaf|grep -q "[t]mux_autostart.sh"
$ echo $?
0

Мы можем затем использовать это выше теста как так в нашем кроне:

*/5 * * * *  ps -eaf|grep -q "[t]mux_autostart.sh" && /root/scripts/tmux_autostart.sh

xinitrc

Если Вы только интересуетесь запуском этого, когда Вы входите в систему, я полагаю, что Вы могли поместить свой сценарий в файл $HOME/.xintrc. Затем это будет работать, когда Вы войдете в систему.

4
18.10.2014, 23:40
3 ответа

также может ли этот скрипт оптимизировать в одну строку команду?

I ' D рассмотрим использование функции -O -O команды для вывода (как можно дальше) только для процентов, а затем после обработки, которая соответствует Java Процессы и определенные командные аргументы (ы), которые вам требуются - что-то вроде

ps -u $USER -o uname=,pid=,args= | 
  gawk -vOFS='\t' '/java/ {print $1,$2,substr($0,match($0,"-D(app[.]name)|(projectName)[^[:space:]]*"),RLENGTH)}'

или, возможно, что-то вроде этого в Perl ( Отказ от ответственности: Мои знания Perl - это схематично )

ps -u $USER -o uname=,pid=,args= | 
  perl -anle 'print join "\t", @F[0], @F[1], grep /-D(app[.]name)|(projectName)/,@F if /java/'
3
27.01.2020, 20:46

Для выравнивания таблиц общего назначения нужна утилита из столбца .

Например:

(
 printf 'PID\tUSER\tAPPNAME\n'
 printf '%s\t%s\t%s\n' "1" "john" "foo bar"
 printf '%s\t%s\t%s\n' "12345678" "someone_with_a_long_name" "pop tart"
) | column -t -s $'\t'

Результат в:

PID       USER                      APPNAME
1         john                      foo bar
12345678  someone_with_a_long_name  pop tart
10
27.01.2020, 20:46

Используйте dd для чтения раздела файла без чтения всего предшествующего. Для примера (чтение байтов от 4 120 000 до 4 120 400) можно использовать

dd  bs=400  skip=10300  count=1  if=your_input_file  of=your_output_file

Это определяет размер логического блока в 400 байт, и затем сообщает dd пропустить первый 10300 "логических блоков" входного файла (, если ). 10300 - это 4,120,000 start400. Затем считывает один блок ( count = 1 ) из 400 байт и записывает его в выходной файл ( из ). Если опустить из спецификации , dd запишет в стандартный вывод, так что вы можете направить его в что-то.

Если начальная точка (смещение) не гарантирована быть целым числом, кратным размеру блока (или даже если оно есть), Вы можете делать более сложные вещи, как

(dd bs=10000 skip=412 count=0;  dd bs=400 count=1 of=your_output_file) < your_input_file

или

(dd bs=4120000 skip=1 count=0;  dd bs=400 count=1 of=your_output_file) < your_input_file

где

  • Опять же, вы можете опустить из спецификации , и это будет запись в стандартный вывод.
  • При выполнении dd без спецификации , если , она считывается из стандартного ввода. Стандартный вход для всего (dd...; dd...) группа команд поступает из < вашего _ входного файла _ в конце.
  • Первая команда dd не считывает и не записывает данные из-за count = 0 ; он только стремится.
  • Поскольку две команды dd получают стандартный ввод от одного и того же перенаправления ввода-вывода, поиск, выполняемый первым, повлияет на указатель файла, который видит второй.
-121--175432-

Что на самом деле делает commit ?

Я думаю, что одно из лучших объяснений было дано здесь allquixotic .

Есть ли на самом деле преимущества его увеличения (например, быстродействие и экономия электроэнергии)? Может ли это на самом деле привести к потере данных?

Согласно ext4 официальной документации :

Ext4 может быть сказано синхронизировать все свои данные и метаданные каждые "nrsec" секунд. Значение по умолчанию - 5 секунд. Это означает, что если вы потеряете свою мощность, вы потеряете столько же, сколько последние 5 секунд работы (ваша файловая система не будет повреждена, однако, благодаря journaling). Это значение по умолчанию (или любое низкое значение) приведет к снижению производительности , но это хорошо для безопасности данных . Установка значения 0 будет иметь тот же эффект, что и при сохранении значения по умолчанию (5 секунд). Установка для очень больших значений повысит производительность .

Увеличение значения commit означает, что вы можете потерять столько же, сколько последние N секунд работы (где N = интервал фиксации), хотя большую часть времени это не произойдет , поскольку программное обеспечение все еще может вызвать fsync () и получить свои данные, записанные на диск, переопределяя параметр фиксации. На него можно было смотреть как на "записывать все на диск хотя бы так часто" . 1
С другой стороны, это означает меньше записей (что делает его довольно популярным среди пользователей ssd) и лучшую производительность (множественные записи объединяются в одну единственную более крупную запись, обновления предыдущих записей в течение интервала времени фиксации отменяются).
Что касается экономии энергии, то, согласно этой странице , в настоящее время возрастающее значение commit не экономит энергию.

-121--30947-

Вот еще один, в котором используется форматирование вывода из ps :

#!/usr/bin/sh -f
printf '%-8.7s%-8s%s\n' $(
     ps -o uname=UID,pid=PID,args=APPNAME | 
     sed -n '1p;s/\( [0-9]* \).*\(-Dapp.name=[^ ]*\).*/\1\2/p'
)

В зависимости от его формата последовательность, для каждого 3 его аргументов printf будет напечатана:

  1. Первое пространство заполнено справа до стандартной ширины табуляции 8 символов и усечено максимум до 7 символов.
  2. Второе пространство, заполненное справа до стандартной ширины табуляции, равной 8 символам.
  3. После третьего следует \n ewline.

Подстановка команды не цитируется специально . Обратите внимание на -f , следующий за sh в bang-line - он указывает, что оболочка должна не glob - поэтому нет опасности случайного создания имен файлов на основе специальных символов оболочки. Замена команды будет разделена на значения по умолчанию $ IFS - космоса, tab, newline.

В подмене команды ps печатает столбцы 3 - с UID , PID и APPNAME . ps указан POSIX не для печати мест в любом поле , за исключением поля args = . Таким образом, первые два столбца являются $ IFS безопасными. Тем не менее, чтобы получить строку -Dapp.name из поля args = , ее необходимо обработать.

Поэтому sed фильтрует его. В строках, содержащих по крайней мере два космический и строку -Dapp.name = , она печатает:

  1. Первая последовательность космоса, затем ноль или больше чисел, затем космос и все, что предшествует ему...
  2. Последняя последовательность, содержащая строку -Dapp.name = , за которой следуют все символы перед следующим пробелом. Замены

sed не влияют на заголовки столбцов, напечатанные с 1p , поскольку они не содержат -Dapp.name = последовательностей. Все остальные строки удаляются из выходных данных.

После применения printf к sed произвел разделение на $IFS , вы можете ожидать продукцию как следующее:

UID     PID     APPNAME
sas     24431   -Dapp.name=myApp
sas     24431   -Dapp.name=myApp
sas     24431   -Dapp.name=myApp
sas     24431   -Dapp.name=myApp
sas     24431   -Dapp.name=myApp

, По-моему, тем не менее, этот заявление sed работало бы немного лучше:

sed -n '1p;s/\( [0-9]* \).*-Dapp.name=\([^ ]*\).*/\1\2/p'

Это - в основном то же, за исключением того, что полосы -Dapp.name = часть от \2 , таким образом, это печатает как...

UID     PID     APPNAME
sas     24431   myApp
sas     24431   myApp
sas     24431   myApp

Потому что, поскольку это только печать строк, содержащих последовательность -Dapp.name = в любом случае, включая это своего рода просто нагромождение, которое в противном случае можно воспринимать как должное.

2
27.01.2020, 20:46

Теги

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