Источник: http://www.ruby.inuse.ru/blog/spine/ruby-ftp-kopirovanie-faila-na-ftp
Понадобилось из Руби скрипта положить файл на FTP Server, вот как я это оформил:
require 'net/ftp'
# Устанавливаес соединение с FTP сервером
session = Net::FTP.new( ftp_server, ftp_login, ftp_password )
# Указываем, что файлы надо воспринимать как бинарные
session.binary = true
# Переводим клиента в пассивный режим
session.passive = true
# Перемещаемся в заданный каталог на FTP сервере
files = session.chdir( 'ruby ftp example' )
# Отправляем файл на сервер
session.putbinaryfile('file_name')
# Закрываем соединение
session.close
Возможно кому-то пригодится. net/ftp это стандартный модуль, дополнительных библиотек не требуется.
среда, 31 марта 2010 г.
Создание и удаление папок в Ruby
Для создания вложенных папок используем
Ранее опубликованное решение:
Источник: http://blog.inst.pp.ru/coding/creation_and_removing_dirs_in_ruby
Удаление (пробовал только в Windows)
require 'fileutils'
FileUtils.remove_dir('C:\FTP_Omega', force=true)
Когда встал вопрос о создании новой папки быстренько нашёл в документации к классу Dir метод mkdir, впрочем, мне это не очень помогло. Задача стояла создать директорию, но вот об уровне вложенности метод mkdir не заботится, — например, если по адресу «/home/inst/examples/newdir» не будет существовать папки «examples», то метод возвратит ошибку. Мне же требовалось создать и все вышележащие папки в случае их отсутствия. Очень повезло с тем, что нашёл в документации к калссу File метод makedirs. Он реализует как раз нужный мне в этом случае функционал. Чтобы им воспользоваться нужно подключить «ftools».
Пример использования:
require 'ftools'
File.makedirs('~/examples/newdir')
С удалением директорий почему-то мне повезло меньше. Удалить непустую директорию вроде бы невозможно. По крайней мере я не нашёл нужного метода и тогда принялся расширять функционал класса Dir. В результате моих раздумий появился метод clear!, который как раз и удаляет всё содержимое из директории, адрес которой передан ему в качестве параметра. Код метода:
class Dir
def clear!
counter = 0
map do |item|
if item != '.' && item != '..'
if File.directory?("#{path}/#{item}")
counter += Dir.new("#{path}/#{item}").clear!
Dir.rmdir "#{path}/#{item}"
else
File.unlink "#{path}/#{item}"
counter += 1
end
end
end
counter
end
end
Пользоваться очень просто, я делаю это так:
Dir.new('~/examples').clear!
Внимание! Методу всё равно какую папку очищать! Трижды проверьте свой код перед передачей параметров моему.
Замечу, что в приведённо выше примере сама директория «examples» не удалится, однако мне этого и не требовалось.
require "fileutils"
FileUtils::mkdir_p "a/b/c"
Ранее опубликованное решение:
Источник: http://blog.inst.pp.ru/coding/creation_and_removing_dirs_in_ruby
Удаление (пробовал только в Windows)
require 'fileutils'
FileUtils.remove_dir('C:\FTP_Omega', force=true)
Когда встал вопрос о создании новой папки быстренько нашёл в документации к классу Dir метод mkdir, впрочем, мне это не очень помогло. Задача стояла создать директорию, но вот об уровне вложенности метод mkdir не заботится, — например, если по адресу «/home/inst/examples/newdir» не будет существовать папки «examples», то метод возвратит ошибку. Мне же требовалось создать и все вышележащие папки в случае их отсутствия. Очень повезло с тем, что нашёл в документации к калссу File метод makedirs. Он реализует как раз нужный мне в этом случае функционал. Чтобы им воспользоваться нужно подключить «ftools».
Пример использования:
require 'ftools'
File.makedirs('~/examples/newdir')
С удалением директорий почему-то мне повезло меньше. Удалить непустую директорию вроде бы невозможно. По крайней мере я не нашёл нужного метода и тогда принялся расширять функционал класса Dir. В результате моих раздумий появился метод clear!, который как раз и удаляет всё содержимое из директории, адрес которой передан ему в качестве параметра. Код метода:
class Dir
def clear!
counter = 0
map do |item|
if item != '.' && item != '..'
if File.directory?("#{path}/#{item}")
counter += Dir.new("#{path}/#{item}").clear!
Dir.rmdir "#{path}/#{item}"
else
File.unlink "#{path}/#{item}"
counter += 1
end
end
end
counter
end
end
Пользоваться очень просто, я делаю это так:
Dir.new('~/examples').clear!
Внимание! Методу всё равно какую папку очищать! Трижды проверьте свой код перед передачей параметров моему.
Замечу, что в приведённо выше примере сама директория «examples» не удалится, однако мне этого и не требовалось.
понедельник, 29 марта 2010 г.
изменение качества изображения из командной строки
sudo apt-get install imagemagick
convert P1020849.JPG -quality 15 P1020849_ew.JPG
сделать новый файл с 15% качеством.
convert -resize 800x800
четверг, 25 марта 2010 г.
Пересборка deb-пакета в Debian/Ubuntu
источник: http://www.ylsoftware.com/news/544
Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
MooSE 2010-01-25 09:13:40 (*)
Поправил. Спасибо.
Не сомневаюсь. Вообще этот сайтик для меня скорее записная книжка, чтобы потом долго не искать.... :)
Очень часто у пользователей Debian, Ubuntu и других основанных на Debian дистрибутивов возникает необходимость пересобрать .deb-пакет какой-то программы из исходных текстов. Ниже будет показано как это можно сделать. Немного конкретизируем задачу: автор этих строк использует дистрибутив Ubuntu Karmic (9.10), в репозитории которого есть Jabber-клиент Gajim версии 0.12.5, однако появилось желание использовать Gajim версии 0.13. Готового пакета для Karmic найдено не было, однако для Ubuntu Lucid (10.04) Alpha этот пакет уже был. Соответственно напрашивалось два варианта решения поставленной задачи:
Автор решил использовать второй способ. Приступаем к решению этой задачи. Для начала нужно зайти на страницу пакета на http://packages.ubuntu.com и скачать архивы с исходными текстами. Для Gajim это страница http://packages.ubuntu.com/gajim а архивы (на момент написания статьи):
Скачав эти файлы установим инструменты, необходимые для пересборки пакетов: apt-get install build-essential dpkg-dev fakeroot Теперь нужно перейти в ту директорию, куда мы скачали архивы с исходными текстами и распаковать эти архивы командой: dpkg-source -x gajim_0.13-0ubuntu2.dsc После распаковки будет создана директория с именем вида "имя_пакета-версия_пакета", в нашем случае имя будет "gajim-0.13", переходим в неё и пытаемся запустить сборку: cd gajim-0.13 && dpkg-buildpackage -rfakeroot -b Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить. Автору этих строк не хватило пакетов: python-dev, python-gtk2-dev, libxss-dev, libgtkspell-dev и dpatch. Список пакетов зависит от уже установленных пакетов и пересобираемой программы. Установим недостающие пакеты: apt-get install python-dev python-gtk2-dev libxss-dev libgtkspell-dev dpatch После успешной установки зависимостей запустим сборку командой: dpkg-buildpackage -rfakeroot -b Если и в этом случае сборка закончится неудачей — надо тщательно проанализировать сообщения об ошибке. Возможно придётся предварительно бэкпортировать более новые версии зависимостей и только потом собирать пакет. У автора всё прошло гладко и был создан пакет "gajim_0.13-0ubuntu2_amd64.deb", расположенный в одной директории с архивами с исходными текстами. Теперь его можно установить командой: sudo dpkg -i ../gajim_0.13-0ubuntu2_amd64.deb Теперь можно пользоваться более новой версией любимой программы:) Остальные программы и библиотеки бэкпортируются аналогичным образом. На этом всё. Приятной работы! |
Анонимный посетитель 2010-01-24 18:04:56 (*)
> Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить.
Зачем? Есть штатные средства - apt-get build-dep gajim
> Если будет выдано сообщение о не хватке каких-то пакетов — их нужно установить.
Зачем? Есть штатные средства - apt-get build-dep gajim
| Цитата: Зачем? Есть штатные средства - apt-get build-dep gajim |
Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
morbo 2010-01-25 07:05:46 (*)
>После успешной установки можно зависимостей запустим сборку командой:
Слово "можно" - лишнее?
>Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
Это всё клёво, но таки ставить зависимости лучше сначала с помощью apt-get build-dep gajim. Если всё нормально, то во-первых версия новее может скомпилироваться с зависимостями из текущего репозитория - тогда ничего дополнительно ни ставить ни бэкпортировать не придётся. А во-вторых, если она не скомпилируется, то хотя бы меньше придётся ставить и бэкпортировать.
Есть ещё такая вещь - atp-get source -b gajim, но это не бэкпортирование, а просто установка из исходников. Смысла в ней мало. Разве что скомпилировать пакет с более свежими установленными в системе зависимостями.
В целом по статье могу сказать, что это общеизвестный минимум.
>После успешной установки можно зависимостей запустим сборку командой:
Слово "можно" - лишнее?
>Это всё клёво, но это работает в рамках текущего среза. Если ты ставишь версию новее чем в твоём репозитории - зависимости могут "поплыть".
Это всё клёво, но таки ставить зависимости лучше сначала с помощью apt-get build-dep gajim. Если всё нормально, то во-первых версия новее может скомпилироваться с зависимостями из текущего репозитория - тогда ничего дополнительно ни ставить ни бэкпортировать не придётся. А во-вторых, если она не скомпилируется, то хотя бы меньше придётся ставить и бэкпортировать.
Есть ещё такая вещь - atp-get source -b gajim, но это не бэкпортирование, а просто установка из исходников. Смысла в ней мало. Разве что скомпилировать пакет с более свежими установленными в системе зависимостями.
В целом по статье могу сказать, что это общеизвестный минимум.
MooSE 2010-01-25 09:13:40 (*)
| Цитата: Слово "можно" - лишнее? |
Поправил. Спасибо.
| Цитата: В целом по статье могу сказать, что это общеизвестный минимум. |
Не сомневаюсь. Вообще этот сайтик для меня скорее записная книжка, чтобы потом долго не искать.... :)
понедельник, 22 марта 2010 г.
Git через proxy
В домашней директории создаём файл
.gitconfigвписываем туда свой proxy [http]
proxy = 77.xxx.xxx.xxx:8123
И теперь при скачивании указываем
git clone http://github.com/scrooloose/vimfiles.git
надо просто git:// заменить на http://, тогда все работает
пока не получилось сделать как http://blogs.gnome.org/juanje/2009/07/17/git_behind_proxy/
При работе сbitbucket.org через https возникла следующая ошибка
error: Couldn't resolve proxy '%http_proxy%' while accessing https://xxxxx@bitbucket.org/xxxx/xxxx/info/refs
fatal: HTTP request failed
Помогло измерение в файле.gitconfig
[http] proxy = https://xx.xx.xxx.xx:8080/
Если нужно использовать git по протоколу ssh:
Источник 1
Источник 2
Установливаем утилитуsocatsudo aptitude install socat
Создаём файл .ssh/config
Host=github.com
ProxyCommand=socat - PROXY:10.20.245.11:%h:%p,proxyport=8080
пятница, 19 марта 2010 г.
Переводчик для VIM
источник 1: http://www.instanceof.ru/linux/vim/translate
источник 2: http://ru.wikibooks.org/wiki/Vim
Определили функцию MyBallonExpr которая будет формировать строку mueller [слово на которое навели] и выполнять. Результат выполнения будет выдавать в «балоне» выпадающем окошке, через 100 миллисекунд.
Естественно вместо mueller вы можите поставить любую другую программу, которая переводит текст.
Для перевода по нажатию клавиши
источник 2: http://ru.wikibooks.org/wiki/Vim
Vim при переводах текста, или для чтения английской документации
Итак, чтобы можно было успешно читать и переводить документацию на английском языке, нужно ИМХО всего 3 вещи:- Редактор.
- Переводчик.
- проверка орфографии
Что возьмем
Редактор мы естественно возьмем VIM хотя бы потому что статья так называется. Переводчик mueller консольная версия, работает так:% mueller sex sex [seks] _n. 1> _биол. пол; the weaker sex слАбый пол, жЕнщины; the sterner (или stronger) sex сИльный пол, мужчИны; the sex _шутл. жЕнщины 2> секс 3> _at tr. половОй, сексуАльный; sex instinct половОй инстИнкт; sex intergrade гермафродИтИ орфографмометр: это spell в виме, словари скачаем с vim.org
Как настроим
Мне интересна возможность выпадающего списка, при наведением на неизвестное мне слово мышкой. Для этого, после долгого чтения манов (или гугленья) узнаем что с помошью команды system можно выполнить какое-то действие, вывод которой куда-либо записать. Короче, пишем где-нибудь в ~/.vimrcfunction! MyBalloonExpr()
return system("mueller ". v:beval_text)
endfunctionset bexpr=MyBalloonExpr() set ballooneval set balloondelay=100
Определили функцию MyBallonExpr которая будет формировать строку mueller [слово на которое навели] и выполнять. Результат выполнения будет выдавать в «балоне» выпадающем окошке, через 100 миллисекунд.
Естественно вместо mueller вы можите поставить любую другую программу, которая переводит текст.
Для перевода по нажатию клавиши
map:call TRANSLATE() function TRANSLATE() let a=getline('.') let co=col('.')-1 let starts=strridx(a," ",co) let ends = stridx(a," ",co) if ends==-1 let ends=strlen(a) endif let res = strpart(a,starts+1,ends-starts) let cmds = "sdcv -n " . res let out = system(cmds) echo out endfunction
Консольные хитрости
1.Копирование файлов с указанием прогресса. Всегда чертовски не хватало информативности в
df -h
cp 2.Информация о использовании дискового пространстваrsync --progress file1 file2
df -h
четверг, 18 марта 2010 г.
Пример скрипта
источник: http://linux-admin.net.ru/content/516
ПРИМЕР
ПРИМЕР
#!/bin/bash
#################################################
#Keyfiles - tar/gzip configuration files #
#Version: Версия 1.0 (черновик) #
#Ackn: основан на идее Dave Turnbull #
#Authour: Thomas Adam #
#Date: Понедельник 28 мая 2001, 16:05 BST #
#Website: www.squidproxyapps.org.uk #
#Contact: thomas@squidproxyapps.org.uk #
########################################Комментарии
#Комментарии для Dave Turnbull. Чтобы он не заблудился :-).
#объявление переменных
configfile="/etc/keyfiles.conf"
tmpdir="/tmp"
wrkdir="/var/log/keyfiles"
tarfile=keyfiles-$(date +%d%m%Y).tgz
method=$1 #опции выбора операции
submethod=$2 #дополнительные опции для "$1"
quiet=0 #вывод отладочной информации (по умолчанию)
cmd=basename $0 #удаляем путь из имени файла
optfiles="Usage: $cmd [--default (--quiet)] [--listconffiles] [--restore (--quiet)] [--editconf] [--delold] [--version]"
version="keyfiles: Автор Thomas Adam, Версия 1.0 (Вторник 5 июня 2001, 23:42)"
#проверка конфигурационного файла...
if [ ! -e $configfile ]; then
for beepthatbell in 1 2 3 4 5; do
echo -en "\x07"
done
echo " " | mail -s "[Keyfiles]: отсутствует файл $configfile" $USER
echo " [Ошибка!]: отсутствует файл $configfile" $USER
exit -1
fi
#проверяем существование рабочей директории, если её нет, то создаём
[ ! -d $wrkdir ] && mkdir $wrkdir
#проверка того, запущен ли скрипт без опций
if [ -z $method ]; then
echo $optfiles
exit 0
fi
#синтаксический разбор командной строки
check_syntax ()
{
case $method in
--default)
cmd_default
;;
--listconffiles)
cmd_listconffiles
;;
--restore)
shift 1
cmd_restore
;;
--editconf)
exec $EDITOR $configfile
exit 0
;;
--delold)
cd $wrkdir && rm -f ./*.old > /dev/null
exit 0
;;
--version)
echo $version
exit 0
;;
--*|-*|*)
echo $optfiles
exit 0
;;
esac
}
#Вот теперь и начинается самое интересное.....
#объявление функции используемой опцией "--default"
cmd_default ()
{
#пакуем все файлы, указанные в $configfile
if [ $submethod ]; then
tar -cZPpsf $tmp/$tarfile $(cat $configfile) &>/dev/null 2>&1
else
tar -vcZPpsf $tmp/$tarfile $(cat $configfile)
fi
#если содержимое каталогов пусто......
if test $(ls -1 $wrkdir | grep -c -) = "0"; then
mv $tmp/$tarfile $wrkdir
exit 0
fi
for i in $(ls $wrkdir/*.tgz); do
mv $i $i.old
done
mv $tmp/$tarfile $wrkdir
}
#вывести список, содержащийся в $configfile
cmd_listconffiles ()
{
sort -o $configfile $configfile
cat $configfile
exit 0
}
#восстановить файлы......
cmd_restore ()
{
cp $wrkdir/keyfiles*.tgz /
cd /
#проверка флага тишины :-)
if [ $submethod ]; then
tar vzxfmp keyfiles*.tgz &>/dev/null 2>&1
rm -f /keyfiles*.tgz
exit 0
else
tar vzxfmp keyfiles*.tgz
rm -f /keyfiles*.tgz
exit 0
fi
}
#вызов головной функции
check_syntax-------------------
Следует заметить, что основные изменения, которые вы можете делать в скрипте -- это изменять три переменные:configfile="/etc/keyfiles.conf" tmpdir="/tmp" wrkdir="/var/log/keyfiles"
Антивирус СlamAV
/etc/clamav/freshclam.conf настройки обновления
параметр Checks - кол-во обновлений в день с сервера обновлений
1. обновление базы clamav через proxy
Нужно в файле /etc/freshclam.conf прописать следующие строчки и раскоментить , прописав туда свои данные параметр Checks - кол-во обновлений в день с сервера обновлений
1. обновление базы clamav через proxy
Code:
#HTTPProxyServer myproxy.com
#HTTPProxyPort 1234
#HTTPProxyUsername myusername
#HTTPProxyPassword mypass
2. Обновление баз вручную команда freshclam
3. Автоматическое обновление производится демоном
Для работы с демоном есть скрипт clamav-freshclam
находится он /etc/init.d/clamav-freshclam {no-daemon|start|stop|restart|force-reload|reload-log|skip|status}
4. Log обновления находится /var/log/clamav/freshclam.log
вторник, 16 марта 2010 г.
Точное время в Debian
1. С помощью следующей команды устанавливаем программу ntpdate:
/usr/share /doc/ntpdate/README.Debian.
Из ридмишки выносим следующее:
4. как сменить часовой пояс (при переезде) в Debian:
# m h dom mon dow command
50 * * * * /usr/sbin/ntpdate-debian >> /home/sa/ntpdate-debian/ntpdate-debian.log
Такое решение прекрасно подходит для всех компьютеров, которые включаются хотя бы оди раз в день (за один день время далеко не убежит), т.е. для домашних машин и для ноутов. Для серверов, которые работают 24×7 это решение, является неоптимальным.
sudo aptitude install ntpdate2.Внимательно читаем ридмишку к программе, которая располагается по адресу/usr/share /doc/ntpdate/README.Debian.
Из ридмишки выносим следующее:
- ntpdate не лучший вариант для использования
- процесс синхронизации происходит каждый раз при “поднятии” сетевого интерфейса
sudo ntpdate debian.pool.ntp.orgаналог команда ntpdate-debian которая берет имена серверов для синхронизации из файла /etc/default/ntpdate параметр NTPDATE_USE_NTP_CONF=no чтобы не брать данные из /etc/ntp.conf (например: может быть не установлен пакет ntp) параметр NTPSERVERS= перечисляем сервера через пробел (у меня просто NTPSERVERS="10.132.70.90")4. как сменить часовой пояс (при переезде) в Debian:
sudo dpkg-reconfigure tzdata
5. Добавляем задание в cron
Пример моего cron: crontab -u root -lSHELL=/bin/sh
# m h dom mon dow command
50 * * * * /usr/sbin/ntpdate-debian >> /home/sa/ntpdate-debian/ntpdate-debian.log
Для изменения cron команда crontab -u root -e от имени root
после изменения не надо перезапускать cron
Резюме
Была установлена программа ntpdate и с помощью нее было синхонизировано время. Программа будет синхронизировать время при понятии сетевого интерфеса (т.е. при включении или перезагрузки машины) + ее можно запускать руками в любоее вермя.Такое решение прекрасно подходит для всех компьютеров, которые включаются хотя бы оди раз в день (за один день время далеко не убежит), т.е. для домашних машин и для ноутов. Для серверов, которые работают 24×7 это решение, является неоптимальным.
Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH
источник: http://debback.blogspot.com/2008/03/linux-windows-xming-ssh.html
Иногда приходится пользоваться тем, что дали. Мой компьютер, на котором стоит Debian Linux, был занят моей женой (не учите своих жен пользоваться линуксом). Зато был свободен компьютер сестры с установленным на нем Windows. И вот появилось желание подключиться к своему компьютеры с рабочей станции под управлением враждебной OS. Первым, что пришло в голову - это удаленный рабочий стол. Однако, нашлось более элегантное решение. И, несмотря на заголовок статьи, речь пойдет о немного другой технологии. Взгляните на этот снимок:

Вы видите приложения Linux прямо на рабочем столе Windows! Как же они туда попали?
Немного о теории. В отличие от Windows, в Linux графическая оболочка не является частью ядра системы. Стандартная оконная система для Linux - это X Window System, или, попросту говоря, иксы. Она берет на себя отрисовку графических элементов и взаимодействие с устройствами ввода-вывода. А самое вкусное заключается в том, что эта система имеет прозрачную клиент-серверную архитектуру. Оконная система выполняет роль сервера, а графические приложения - роль клиентов. Как и положено клиентам, они подключаются к серверу и взаимодействуют с ним для отрисовки и для получения событий мыши и клавиатуры.
Но это еще не все! Дело в том, что оконная система может находиться на другом компьютере, а графическое приложение связываться с ней через сеть. Так вы можете запустить приложение на удаленном компьютере, заставив его рисоваться на том компьютере, за которым сейчас работаете. Или наоборот. Или запустить программу на одном удаленном компьютере с отрисовкой интерфейса на другом удаленном компьютере. Заманчивая возможность, неправда ли? :-)
Думаю, достаточно теории, давайте приступим к практике.
Для начала подготовим удаленный компьютер Debian Linux. Все, что нам здесь нужно - это SSH-сервер. Через него мы будем подключаться удаленно и запускать нужные нам программы. Выполняем всего одну команду в консоли:
$ sudo apt-get install openssh-server
Все, с этим компьютером мы закончили, и касаться его клавиатуры в ходе этой статьи больше не будем. Теперь можем переходить к подготовке компьютера Windows. Здесь нужно установить две программы:
1. SSH-клиент. Я установил PuTTY.
2. X Server для Windows. Я выбрал Xming.
Обе программы можно загрузить с сайта SourceForge (пакеты Xming и Xming-portable-PuTTY). Также по желанию можно загрузить стандартный набор шрифтов (пакет Xming-fonts). Все, что загрузили - устанавливаем (с полной установкой всех компонент Xming), и переходим к настройке. Теперь главное не запутаться, что к чему будем подключать :-)
Для начала установим соединение по SSH с удаленным компьютером. Для этого запускаем PuTTY. Вводим IP-адрес компьютера Linux.

Теперь переходим в раздел Connection / SSH / X11 и включаем перенаправление графического интерфейса. В качестве расположения X-сервера водим IP-адрес компьютера Windows, за которым сейчас сидим.

Кроме того, чтобы вместо русских букв не всплыли крокозябли, желательно в разделе Window / Translation установит правильную кодировку (у меня - UTF8 - стандартная кодировка на Debian и Ubuntu). Возвращаемся в раздел Session, сохраняем настройки и подключаемся к компьютеру Linux. В случае успешного подключения мы вводим логин и пароль и видим текстовую консоль. С ее помощью мы можем удаленно запустить консольные программы, но графические программы не могут рисоваться в консоли. Поэтому оставим на время наше подключение по SSH.
Теперь настроим Xming. Для этого запускаем программу XLaunch - это мастер настроек. На первом шаге указываем способ интеграции в графическое окружение Windows. Мне более всего по душе первый, когда каждое приложение Linux находится в своем окне.

На втором шаге нам предлагается автоматически запускать какое-нибудь приложение вместе с иксами. Я предпочел сделать это позже по мере необходимости посредством уже запущенного нами PuTTY.

На третьем шаге указываем параметры запуска Xming. Опция Clipboard позволяет интегрировать буфер обмена. Также для полноценной работы я ввел следующие параметры:
"-dpi 96" - чтобы поправить размер шрифтов. Значение можно подбирать по вкусу.
"-xkblayout us,ru" - для работы с двумя раскладками клавиатуры.
"-xkbvariant basic,winkeys" - уточнение раскладок.
"-xkboptions grp:caps_toggle" - переключение раскладки клавишей CAPS LOCK.

И, наконец, на следующем шаге сохраняем настройки кнопкой "Save configuration" и запускаем X-сервер кнопкой "Готово".

В системном лотке появится иконка Xming

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

Итак, X-сервер запущен. Возвращаемся в нашу консоль, предоставленную соединением SSH. Здесь мы можем удаленно запустить консольное приложение, и в этой же консоли увидим вывод этого приложения. А что теперь будет, если мы попытаемся запустить в этой консоли графическое приложение? Обычно, если вы подключились по SSH и пытаетесь запустить оконное приложение, вы получите ошибку, потому что вы подключились к удаленному компьютеру в консольном режиме, и рисовать окна просто нечем. Однако, в этот раз мы включили перенаправление графики на наш компьютер Windows, на котором уже запущен свой X-сервер. Поэтому, если вы попытаетесь запустить оконное приложение в удаленном консольном терминале, его окно нарисуется на компьютере Windows. Попробуйте, например, набрать следующую команду:
$ kwrite &
или
$ gedit &
Амперсанд в конце команды указывает, что программу нужно запустить в фоновом режиме, чтобы во время ее работы консоль была доступна для других действий.
Ну, надеюсь, у вас все получилось, и на вашем рабочем столе Windows красуются оконные приложения Linux.
Кстати говоря, благодаря этой клиент-серверной архитектуре злоумышленник может отправить на ваш экран окно с просьбой ввести ваш пароль или еще с какой-нибудь гадостью. Чтобы такого не происходило, не подключайтесь к общественным сетям без фаирвола. И помните: большие возможности - это большая ответственность.
Иногда приходится пользоваться тем, что дали. Мой компьютер, на котором стоит Debian Linux, был занят моей женой (не учите своих жен пользоваться линуксом). Зато был свободен компьютер сестры с установленным на нем Windows. И вот появилось желание подключиться к своему компьютеры с рабочей станции под управлением враждебной OS. Первым, что пришло в голову - это удаленный рабочий стол. Однако, нашлось более элегантное решение. И, несмотря на заголовок статьи, речь пойдет о немного другой технологии. Взгляните на этот снимок:
Вы видите приложения Linux прямо на рабочем столе Windows! Как же они туда попали?
Немного о теории. В отличие от Windows, в Linux графическая оболочка не является частью ядра системы. Стандартная оконная система для Linux - это X Window System, или, попросту говоря, иксы. Она берет на себя отрисовку графических элементов и взаимодействие с устройствами ввода-вывода. А самое вкусное заключается в том, что эта система имеет прозрачную клиент-серверную архитектуру. Оконная система выполняет роль сервера, а графические приложения - роль клиентов. Как и положено клиентам, они подключаются к серверу и взаимодействуют с ним для отрисовки и для получения событий мыши и клавиатуры.
Но это еще не все! Дело в том, что оконная система может находиться на другом компьютере, а графическое приложение связываться с ней через сеть. Так вы можете запустить приложение на удаленном компьютере, заставив его рисоваться на том компьютере, за которым сейчас работаете. Или наоборот. Или запустить программу на одном удаленном компьютере с отрисовкой интерфейса на другом удаленном компьютере. Заманчивая возможность, неправда ли? :-)
Думаю, достаточно теории, давайте приступим к практике.
Для начала подготовим удаленный компьютер Debian Linux. Все, что нам здесь нужно - это SSH-сервер. Через него мы будем подключаться удаленно и запускать нужные нам программы. Выполняем всего одну команду в консоли:
$ sudo apt-get install openssh-server
Все, с этим компьютером мы закончили, и касаться его клавиатуры в ходе этой статьи больше не будем. Теперь можем переходить к подготовке компьютера Windows. Здесь нужно установить две программы:
1. SSH-клиент. Я установил PuTTY.
2. X Server для Windows. Я выбрал Xming.
Обе программы можно загрузить с сайта SourceForge (пакеты Xming и Xming-portable-PuTTY). Также по желанию можно загрузить стандартный набор шрифтов (пакет Xming-fonts). Все, что загрузили - устанавливаем (с полной установкой всех компонент Xming), и переходим к настройке. Теперь главное не запутаться, что к чему будем подключать :-)
Для начала установим соединение по SSH с удаленным компьютером. Для этого запускаем PuTTY. Вводим IP-адрес компьютера Linux.
Теперь переходим в раздел Connection / SSH / X11 и включаем перенаправление графического интерфейса. В качестве расположения X-сервера водим IP-адрес компьютера Windows, за которым сейчас сидим.
Кроме того, чтобы вместо русских букв не всплыли крокозябли, желательно в разделе Window / Translation установит правильную кодировку (у меня - UTF8 - стандартная кодировка на Debian и Ubuntu). Возвращаемся в раздел Session, сохраняем настройки и подключаемся к компьютеру Linux. В случае успешного подключения мы вводим логин и пароль и видим текстовую консоль. С ее помощью мы можем удаленно запустить консольные программы, но графические программы не могут рисоваться в консоли. Поэтому оставим на время наше подключение по SSH.
Теперь настроим Xming. Для этого запускаем программу XLaunch - это мастер настроек. На первом шаге указываем способ интеграции в графическое окружение Windows. Мне более всего по душе первый, когда каждое приложение Linux находится в своем окне.
На втором шаге нам предлагается автоматически запускать какое-нибудь приложение вместе с иксами. Я предпочел сделать это позже по мере необходимости посредством уже запущенного нами PuTTY.
На третьем шаге указываем параметры запуска Xming. Опция Clipboard позволяет интегрировать буфер обмена. Также для полноценной работы я ввел следующие параметры:
"-dpi 96" - чтобы поправить размер шрифтов. Значение можно подбирать по вкусу.
"-xkblayout us,ru" - для работы с двумя раскладками клавиатуры.
"-xkbvariant basic,winkeys" - уточнение раскладок.
"-xkboptions grp:caps_toggle" - переключение раскладки клавишей CAPS LOCK.
И, наконец, на следующем шаге сохраняем настройки кнопкой "Save configuration" и запускаем X-сервер кнопкой "Готово".
В системном лотке появится иконка Xming
В дальнейшем запустить сервер с теми же настройками можно просто путем открытия сохраненного файла. Изменить настройки можно через контекстное меню файла.
Итак, X-сервер запущен. Возвращаемся в нашу консоль, предоставленную соединением SSH. Здесь мы можем удаленно запустить консольное приложение, и в этой же консоли увидим вывод этого приложения. А что теперь будет, если мы попытаемся запустить в этой консоли графическое приложение? Обычно, если вы подключились по SSH и пытаетесь запустить оконное приложение, вы получите ошибку, потому что вы подключились к удаленному компьютеру в консольном режиме, и рисовать окна просто нечем. Однако, в этот раз мы включили перенаправление графики на наш компьютер Windows, на котором уже запущен свой X-сервер. Поэтому, если вы попытаетесь запустить оконное приложение в удаленном консольном терминале, его окно нарисуется на компьютере Windows. Попробуйте, например, набрать следующую команду:
$ kwrite &
или
$ gedit &
Амперсанд в конце команды указывает, что программу нужно запустить в фоновом режиме, чтобы во время ее работы консоль была доступна для других действий.
Ну, надеюсь, у вас все получилось, и на вашем рабочем столе Windows красуются оконные приложения Linux.
Кстати говоря, благодаря этой клиент-серверной архитектуре злоумышленник может отправить на ваш экран окно с просьбой ввести ваш пароль или еще с какой-нибудь гадостью. Чтобы такого не происходило, не подключайтесь к общественным сетям без фаирвола. И помните: большие возможности - это большая ответственность.
Установка и настройка IceWM в минимальной конфигурации.
источник: http://avreg.net/howto_icewm.html
В статье рассматривается один из вариантов установки лёгкого оконного менеджера IceWM и его начальной настройки для создания графического рабочего стола (десктопа) «одного приложения».
Такая конфигурация может быть полезна при подготовке промышленных или служебных рабочих станций (операторы, кассиры, диспетчеры, охранники, и т.п.), в которых основные приложения работают в «графике».
Итого, нужно следующее:
Требуется установленный и настроенный сервер Х ( читай «Установка и настройка сервера X.Org (X Window System).» ).
Уровень сложности: средний.
В. Почему IceWM?
О. По нашему мнению, в нём присутствует баланс скорости, безопасности, гибкости настройки и «привычности» интерфейса.
В. Не хочу IceWM.
О. Выбирайте любой оконный менеджер для X: 9wm, aewm, aewm++, afterstep, amaterus, amiwm, asclassic, blackbox, ctwm, dwm, enlightenment, evilwm, fluxbox, flwm, fvwm, fvwm-gnome, fvwm1, icewm, icewm-lite, ion2, jwm, kwin, larswm, lesstif-bin, lwm, metacity, olvwm, olwm, openbox, oroborus, pwm, qvwm, ratpoison, sapphire, sawfish, tinywm, twm, uwm, vtwm, w9wm, waimea, windowlab, wm2, wmaker, wmii, wmii2, xfwm4.
Для представления что такое оконный менеджер IceWM читаем:
Такая конфигурация может быть полезна при подготовке промышленных или служебных рабочих станций (операторы, кассиры, диспетчеры, охранники, и т.п.), в которых основные приложения работают в «графике».
Итого, нужно следующее:
- система должна автоматически загружаться без участия пользователя и запускать основное рабочее приложение;
- в системе не должно быть посторонних программ, кроме основной программы рабочего места и программ, необходимых для администрирования.
Требуется установленный и настроенный сервер Х ( читай «Установка и настройка сервера X.Org (X Window System).» ).
Уровень сложности: средний.
В. Почему IceWM?
О. По нашему мнению, в нём присутствует баланс скорости, безопасности, гибкости настройки и «привычности» интерфейса.
В. Не хочу IceWM.
О. Выбирайте любой оконный менеджер для X: 9wm, aewm, aewm++, afterstep, amaterus, amiwm, asclassic, blackbox, ctwm, dwm, enlightenment, evilwm, fluxbox, flwm, fvwm, fvwm-gnome, fvwm1, icewm, icewm-lite, ion2, jwm, kwin, larswm, lesstif-bin, lwm, metacity, olvwm, olwm, openbox, oroborus, pwm, qvwm, ratpoison, sapphire, sawfish, tinywm, twm, uwm, vtwm, w9wm, waimea, windowlab, wm2, wmaker, wmii, wmii2, xfwm4.
Для представления что такое оконный менеджер IceWM читаем:
- Wiki IceWM (★★★),
Установка
Debian/Ubuntu
Ищем пакеты в описании которых есть упоминание о IceWM:
user@host:~$ apt-cache search icewm icewm-lite - wonderful Win95-OS/2-Motif-like window manager icewm-gnome-support - GNOME support files for IceWM icedove-traybiff - traybiff - new mail alert for Icedove grun - GTK based Run dialog iceconf - Configuration tool for icewm wmctrl - control an EWMH/NetWM compatible X Window Manager icemc - Editor for IceWM menus gsetroot - a C/Gtk-based front-end for Esetroot dfm - Desktop-File-Manager for X11 icewm-experimental - wonderful Win95-OS/2-Motif-like window manager fspanel - minimalist panel for X icewm-common - wonderful Win95-OS/2-Motif-like window manager icewm - wonderful Win95-OS/2-Motif-like window manager icewm-themes - Theme files for the Ice Window ManagerУстанавливаем то, что выбрали и не забываем про эмулятор терминала xterm:
IceWM
user@host:~$ sudo aptitude install icewm xterm # для локали ru_RU.UTF-8 устанавливаем в качестве x-terminal-emulator # uxterm - X terminal emulator for for Unicode (UTF-8) environments user@host:~$ sudo update-alternatives --set x-terminal-emulator /usr/bin/uxterm
RedHat/CentOS/Fedora
yum install icewm ??? 

Настройка графического окружения
Выбор менеджером по-умолчанию.
В Debian/Ubuntu
Определяем icewm оконным менеджером по-умолчанию для всех пользователей.
Способ 1: определением x-window-manager и x-session-manager (также используются в скриптах xinit/startx) через подсистему альтернатив (man update-alternatives(8))
Примечание: переменная STARTUP не должна быть определена.
Для проверки обоих способов используйте команду startx:

Способ 1: определением x-window-manager и x-session-manager (также используются в скриптах xinit/startx) через подсистему альтернатив (man update-alternatives(8))
Примечание: переменная STARTUP не должна быть определена.
# доступные альтернативы для x-window-manager user@host:~$ sudo update-alternatives --list x-window-manager /usr/bin/icewm # доступные альтернативы для x-session-manager user@host:~$ sudo update-alternatives --list x-session-manager /usr/bin/icewm-session # смотрим кто сейчас x-window-manager user@host:~$ ls -l /etc/alternatives/x-window-manager lrwxrwxrwx 1 root root 14 2007-08-05 22:06 /etc/alternatives/x-window-manager -> /usr/bin/icewm # если отличается от /usr/bin/icewm, то устанавливаем user@host:~$ sudo update-alternatives --set x-window-manager /usr/bin/icewm # проверяем user@host:~$ ls -l /etc/alternatives/x-window-manager lrwxrwxrwx 1 root root 14 2007-11-18 22:16 /etc/alternatives/x-window-manager -> /usr/bin/icewm # смотрим кто сейчас x-session-manager user@host:~$ ls -l /etc/alternatives/x-session-manager lrwxrwxrwx 1 root root 14 2007-08-05 22:06 /etc/alternatives/x-window-manager -> /usr/bin/icewm-session # если отличается от /usr/bin/icewm-session, то устанавливаем user@host:~$ sudo update-alternatives --set x-session-manager /usr/bin/icewm-session # проверяем user@host:~$ ls -l /etc/alternatives/x-session-manager lrwxrwxrwx 1 root root 22 2007-11-18 22:16 /etc/alternatives/x-session-manager -> /usr/bin/icewm-sessionСпособ 2 (устаревший): установкой глобальной переменной окружения STARTUP, которая обрабатывается скриптом xinit (startx).
user@host:~$ sudo echo 'STARTUP="icewm-session"' >> /etc/environmentПроверить состояние переменной можно командой env:
user@host:~$ env | grep STARTUP STARTUP=icewm-sessionПримечание: чтобы переменная «вступила» в силу нужно выйти из системы (logout) и войти заново (login).
Для проверки обоих способов используйте команду startx:
Запуск сервера X из консоли
Скриншот IceWM после установки.user@host:~$ startx

Отсекаем лишнее.
Все настройки IceWM расположены в конфигурационных файлах в каталогах:
- /etc/X11/icewm - глобальные настройки для всех пользователей;
- $HOME/.icewm - настройки пользователя, перекрывают глобальные;
- theme - установки текущей темы;
- preferences - главные параметры, yправляет поведением и общим внешним видом IceWM: пути, цвета, шрифты,…;
- prefoverride - то же что и preferences, только может быть переопределено установками темы;
- menu - управляет содержимым «стартового» меню;
- programs - управляет содержимым «programs», подменю «стартового» меню;
- toolbar - управляет рядом запускающих кнопок на панели задач, и имеет такой же синтаксис как и файл меню;
- winoptions - управляет поведением отдельных приложений;
- keys - глобальные сочетания клавиш для быстрого запуска приложений (прим: есть ещё уровень ниже: x key binding )
~/.icewm/preferences
user@host:~$ cat ~/.icewm/preferences ### Меню ### # Отображать подменю программ ShowProgramsMenu = 0 # ... подменю "Темы" ShowThemesMenu = 0 # ... меню "Выход" ShowLogoutMenu = 1 # Show logout submenu ShowLogoutSubMenu = 0 # ... "Помощь" ShowHelp = 0 # ... "О программе" ShowAbout = 0 # ... "Запустить" ShowRun = 0 # ... меню "Список окон" ShowWindowList = 0 ### Панель задач ### # Отображать "Панель задач" ShowTaskBar = 1 TaskBarShowAllWindows = 1 TaskBarShowMailboxStatus = 0 TaskBarShowWorkspaces = 0 TaskBarShowCPUStatus = 1 TaskBarCPUDelay = 1000 CPUStatusCommand='xterm -name top -title "TOP" -e /bin/sh -c "while : ; do top; sleep 5; clear; done"' TaskBarShowNetStatus = 1 TaskBarNetDelay = 1000 NetStatusCommand = 'xterm -name netstat -title "Network Status" -e /bin/sh -c "while : ; do netstat -atun; sleep 5; clear; done"' NetworkStatusDevice = 'eth0 eth1'
~/.icewm/toolba
user@host:~$ cat ~/.icewm/toolbar # This is a default toolbar definition file for IceWM # # Place your personal variant in $HOME/.icewm directory. prog XTerm xterm x-terminal-emulator #prog "Vim" vim /usr/bin/gvim -f #prog "WWW" /usr/share/pixmaps/firefox.png x-www-browser prog "avreg-mon" - x-terminal-emulator -e /usr/bin/avreg-mon -v
~/.icewm/menu
user@host:~$ cat ~/.icewm/menu # This is an example for IceWM's menu definition file. # # Place your variants in /etc/X11/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog Terminal xterm x-terminal-emulator -ls
Приложения в автозагрузку.
Включаем нужные приложения в автозагрузку по старту графической оболочки для конкретного пользователя:
# нужно войти под конкретным пользователем и перейти в его домашний каталог user@host:~$ cd $HOME # создаём каталог, с всеми пользовательскими настройками IceWM # (то есть можно потом клонировать для других юзеров) user@host:~$ mkdir ~/.icewm # создаём startup "автозагрузочный" сценарий # показан метод с консоли, можно набрать в редакторе: # editor ~/.icewm/startup (исключая строки с командой cat и заключительным _EOF_) user@host:~$ cat <<_EOF_ > ~/.icewm/startup #!/bin/sh # автозагрузка программ для icewm # если установлен gkrellm [ -x /usr/bin/gkrellm ] && /usr/bin/gkrellm& # если установлен xxkb [ -x /usr/bin/xxkb ] && /usr/bin/xxkb& # если установлен локальный просмотрщик камер avreg-mon # включать только после окончательной настройки AVReg if [ -x /usr/bin/avreg-mon ]; then (sleep 3; /usr/bin/avreg-mon&)& fi # если установлен idesk if [ -x /usr/bin/idesk ]; then (sleep 2; /usr/bin/idesk&)& fi exit 0 _EOF_ # делаем скрипт исполняемым user@host:~$ chmod u+x ~/.icewm/startup
Переключатель раскладок клавиатуры XXKB.
Устанавливаем индикатор раскладки клавиатуры XXKB:
Приводим отличия от стандартной версии конфигурационного файла:
Debian/Ubuntu
Настройка xxkb (прим: глобально для всех пользователей) производится через файл /etc/X11/app-defaults/XXkbuser@host:~$ sudo aptitude install xxkb
Приводим отличия от стандартной версии конфигурационного файла:
- «–» - помечены строки, которые нужно удалить,
- »+» - добавить (обычно вместо удалённых).
/etc/X11/app-defaults/XXkb
Документация по настройке xxkb на русском языке:-XXkb.mainwindow.enable: yes +XXkb.mainwindow.enable: no -XXkb.button.geometry: 15x15-60+7 +XXkb.button.geometry: 15x15-70+7 -XXkb.button.xpm.3: su15.xpm -XXkb.button.xpm.4: +XXkb.app_list.wm_class_name.ignore: gkrellm avreg-mon
"хитрый" способ, так как документ в KOI8-R, а локаль обычно в UTF-8
user@localhost:~$ zcat /usr/share/doc/xxkb/README.koi8.gz | iconv -f koi8-r | pager
Вынос ярлыков для запуска на рабочий стол.
IceWM ничего не знает про ярлыки рабочего стола (иконки), поэтому для их использования понадобится приложение idesk.
Установка idesk в Debian/Ubuntu
Создаём конфигурационный файл .ideskrc:user@host:~$ sudo aptitude install idesk
~/.ideskrc
Создаём каталог для файлов - ярлыков:user@host:~$ cat << _EOF_ > .ideskrc table Config FontName: helvetica FontSize: 13 FontColor: #37CFA6 ToolTip.FontSize: 13 ToolTip.FontName: helvetica ToolTip.ForeColor: #0000FF ToolTip.BackColor: #FFFFFF ToolTip.CaptionOnHover: true ToolTip.CaptionPlacement: Right Locked: true Transparency: 100 Shadow: true ShadowColor: #000000 ShadowX: 1 ShadowY: 1 Bold: true ClickDelay: 300 IconSnap: true SnapWidth: 10 SnapHeight: 10 SnapOrigin: BottomRight SnapShadow: false SnapShadowTrans: 200 CaptionOnHover: false CaptionPlacement: bottom FillStyle: fillinvert Background.Delay: 0 Background.Source: None Background.File: None Background.Mode: Center Background.Color: #C2CCFF end table Actions Lock: control right doubleClk Reload: middle doubleClk Drag: left hold EndDrag: left singleClk Execute[0]: left doubleClk end _EOF_
user@host:~$ mkdir .idesktopДля примера создадим ярлык программы часов на рабочем столе:
user@host:~$ cat << _EOF_ > ~/.idesktop/xclock.lnk table Icon Caption: Часы Icon: /usr/share/idesk/folder_home.xpm X: 31 Y: 31 Command[0]: /usr/bin/xclock end _EOF_Документация по idesk:
- с примерами в каталогах /usr/share/idesk/ и /usr/share/doc/idesk/
Файловые менеджеры.
- двухпанельные (с идеологией Norton Commander):
- mc - Midnight Commander (на псевдографике, в консоли или в терминале);
- emelfm, gentoo, worker - графические;
-
- однопалельные в стиле проводника Win, но с табами:
- pcmanfm или облегчённая версия без поддержки HAL pcmanfm-nohal.
-
Debian/Ubuntu
user@host:~$ sudo aptitude install ИМЯ_ПАКЕТА
Системные мониторы.
Если на целевом компьютере необходимо следить за системными показателями, такими как загрузка процессора, памяти, сети, заполнение диска(ов), можно воспользоваться графическими апплетами рабочего стола из класса системных мониторов.
В легковесных графических WM, к которым относится IceWM, нет встроенных мониторов как в полновесных GNONE и KDE, однако эта ситуация легко разрешается установкой «внешних» апплетов.
Мы советуем обратить внимание на два таких монитора:
В легковесных графических WM, к которым относится IceWM, нет встроенных мониторов как в полновесных GNONE и KDE, однако эта ситуация легко разрешается установкой «внешних» апплетов.
Мы советуем обратить внимание на два таких монитора:
- gkrellm
- установкаDebian/Ubuntu
user@host:~$ sudo aptitude install gkrellm
- документация:
- сайт разработчиков http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
- /usr/share/doc/gkrellm/README.gz
-
-
- conky
- установкаDebian/Ubuntu
user@host:~$ sudo aptitude install conky
- документация:
- сайт разработчиков http://conky.sourceforge.net/
- и примеры в каталоге /usr/share/doc/conky
-
-
Заключительные операции
Автологин (вход без ввода пароля).
Автоматический вход в систему под определённым пользователем без ввода пароля с загрузка графической оболочки (и соответственно программ в «автозагрузке»).
В конце фазы загрузки любого дистрибутива Linux Вы увидите приглашение на вход в систему (login).
Если Вы физически находитесь прямо за целевым компьютером, то такое приглашение будет
Как правило в большинстве дистрибутивов есть скрипт /etc/init.d/rc.local (пути могут быть несколько другими), который выполняется одним из последних, среди всех демонов(сервисов)
В свою очередь, /etc/init.d/rc.local, выполняет скрипт /etc/rc.local, в который мы и вставим команду, которая:
Варианты:
В конце фазы загрузки любого дистрибутива Linux Вы увидите приглашение на вход в систему (login).
Если Вы физически находитесь прямо за целевым компьютером, то такое приглашение будет
- либо в текстовом режиме - на системной или виртуальной консоли,
- либо в графическом режиме - это работают дисплейные менеджеры gdm, kdm, xdm.
Как правило в большинстве дистрибутивов есть скрипт /etc/init.d/rc.local (пути могут быть несколько другими), который выполняется одним из последних, среди всех демонов(сервисов)
В свою очередь, /etc/init.d/rc.local, выполняет скрипт /etc/rc.local, в который мы и вставим команду, которая:
- обеспечит вход в систему пользователя с именем luser (подставьте своего);
- запустит графический сервер Х (далее нужные приложения см. #Приложения в автозагрузку).
user@host:~$ sudo editor /etc/rc.localи добавляем в конец, перед последней строкой «exit 0», строки:
Bash
Однако это ещё не всё. Теперь нужно определить кто может запускать сервер X.# автологин пользователя с именем "luser" с последующим запуском графической оболочки /bin/su - luser -c "/bin/sh -lc startx"
Варианты:
- только root;
- пользователь с консоли;
- кто-угодно (выберите этот вариант).
Debian/Ubunty
В других дистрибутивах просто отредактируйте файл /etc/X11/Xwrapper.config, определив параметр «allowed_users» значением «anybody»user@host:~$ sudo dpkg-reconfigure x11-common user@host:~$ sudo /etc/init.d/x11-common restart
user@host:~$ cat /etc/X11/Xwrapper.config # Xwrapper.config (Debian X Window System server wrapper configuration file) # # See the Xwrapper.config(5) manual page for more information. # # If you have edited this file but would like it to be automatically updated # again, run the following command as root: # dpkg-reconfigure x11-common allowed_users=anybody nice_value=0Перегружаемся для проверки.
user@host:~$ sudo reboot или user@host:~$ sudo shutdown -r now
Очистка xsession-errors
В домашнем каталоге пользователя присутствует файл .xsession-errors в который дописывается STDERR вывод приложений, запускаемых в графической оболочке.
Проблема в том, что .xsession-errors файл умеет только «расти» и нужно как-то его очищать или запретить дозапись.
Приводим глобальный способ для всех пользователей через правку скрипта Xsession, выполняемого по startx или десктоп-менеджером, таким как xdm, gdm, kdm.
Проблема в том, что .xsession-errors файл умеет только «расти» и нужно как-то его очищать или запретить дозапись.
Приводим глобальный способ для всех пользователей через правку скрипта Xsession, выполняемого по startx или десктоп-менеджером, таким как xdm, gdm, kdm.
патч
debian:/etc/X11# diff -u /etc/X11/Xsession.orig /etc/X11/Xsession --- /etc/X11/Xsession.orig 2007-11-19 04:50:31.000000000 +0300 +++ /etc/X11/Xsession 2007-11-19 04:50:56.000000000 +0300 @@ -91,7 +91,7 @@ errormsg "unable to create X session log/error file; aborting." fi -exec >>"$ERRFILE" 2>&1 +exec >"$ERRFILE" 2>&1 echo "$PROGNAME: X session started for $LOGNAME at $(date)"
Защита конфигурации
Необходимо обеспечить, что конфигурация рабочего стола не была случайно или не случайно испорчена вандалом юзером.
Вспоминаем, что все настройки, произведённые в примерах этой статьи находятся и сохранены в файловой системе (файлах). Это значит, что для нашей задачи нужно просто запретить изменение файлов и каталогов.
Например:
Вспоминаем, что все настройки, произведённые в примерах этой статьи находятся и сохранены в файловой системе (файлах). Это значит, что для нашей задачи нужно просто запретить изменение файлов и каталогов.
Например:
user@host:~$ sudo chown -R root .icewm .idesktop .ideskrc .bash*
Основы управления доступом к файлам
истчник: http://www.opennet.ru/base/sys/file_access.txt.html
Курс молодого бойца. Основы управления доступом к файлам.
Операционная система Linux - это многопользовательская система,
которая дает огромные возможности манипулирования доступом к данным
для каждого пользователя отдельно. Это позволяет гибко регулировать
отношения между пользователями, объединяя их в группы, что позволит
защитить данные одного пользователя от нежелательного вмешательства
других.
Бессмысленно считать, что файловая система это не самая важная часть
операционной системы, поскольку все данные пользователей хранятся
именно в файлах.
В UNIX-подобных системах файлы также обеспечивают доступ к
периферийным устройствам, дисковым накопителям, принтерам и т.п.
UID, GID
Каждый пользователь в системе имеет свой уникальный идентификационный
номер (user-ID, или UID). Также пользователи могут объединяться в
группы, которые в свою очередь имеют group-ID, или GID. Чтобы узнать
свой UID и GID, т.е. уникальный номер пользователя и номер группы, к
которой Вы принадлежите, необходимо ввести команду id:
[dmitry@localhost dmitry]$id
uid=502 (dmitry) gid=503(users) groups=503(users)
Права доступа к файлам
В свою очередь файлы имеют двух владельцев: пользователя (user owner)
и группу пользователей (group owner). Для каждого файла есть
индивидуальные права доступа, которые разбиты на три группы:
1. Доступ для пользователя-владельца файла (owner).
2. Доступ для группы-владельца файла (group).
3. Доступ для остальных пользователей (others).
Для каждой категории устанавливаются три вида доступа: (x) - право на
запуск файла, (r) - право на чтение файла, (w) - право на изменение
(редактирование) файла.
Для того, чтобы увидеть права доступа к файлам необходимо ввести
команду ls с ключом -l:
[dmitry@localhost dmitry]$ls -l /home/file.tmp
-rwxr-xr-- 1 dmitry users 33 Dec 1 00:38 file.tmp
Для данного примера мы видим, что владелец имеет права на чтение,
запись, и выполнение (первые три буквы rwx), группа пользователей
может лишь читать и выполнять этот файл (следующие три r-x), ну а
остальные пользователи могут только читать данный файл (последние
символы r--).
Изменение прав доступа
Права пользователя могут быть изменены только владельцем файла или
пользователем с правами администратора системы. Для изменения прав
используется команда
chmod [ u | g | o | a ] [+ | - | = ] [r | w | x ] name1 [name2 ...].
В качестве аргументов команда принимает указание классов доступа ('u'
- владелец-пользователь, 'g' - владелец-группа, 'o' - остальные
пользователи, 'a' - все вышеперечисленные группы вместе), права
доступа ('r' - чтение, 'w' - запись, 'x' - выполнение) и операцию,
которую необходимо произвести ('+' - добавить, '-' -убрать, '=' -
присвоить).
Таким образом, чтобы разрешить выполнение файла prog.pl всем
пользователем необходимо выполнить команду:
[dmitry@localhost dmitry]$ chmod a+x prog.pl
Далее, чтобы оставить права записи только для владельца файла
необходимо выполнить:
[dmitry@localhost dmitry]$ chmod go-w prog.pl
Рассмотрим еще несколько примеров:
$ chmod go=w prog.pl установить право на запись для всех пользователей
кроме владельца
$ chmod a+x prog.pl предоставить право на запись для всех
пользователей
$ chmod g+x-w prog.pl Добавить для группы право на выполнения файла,
но снять право на запись
Права доступа можно представить в виде битовой строки, в которой
каждые 3 бита определяют права доступа для соответствующей категории
пользователей, как представлено в таблице:
rwx rwx rwx
421 421 421
user group others
владелец группа остальные
Таким образом, для команды chmod 666 prog.pl имеем:
[dmitry@localhost dmitry]$ chmod 666 prog.pl
[dmitry@localhost dmitry]$ ls -l prog.pl
-rw-rw-rw- 1 dmitry users 78 Nov 20 prog.pl
Команда chmod 644 somefile устанавливает "обычные" права доступа, т.е.
владелец может читать и записывать в файл, а все остальные
пользователи - только читать.
Особенности прав доступа для каталогов
Права доступа для каталогов не столь очевидны. Это в первую очередь
связано с тем, что система трактует операции чтения и записи для
каталогов отлично от остальных файлов. Право чтения каталога позволяет
Вам получить имена (и только имена) файлов, находящихся в данном
каталоге. Чтобы получить дополнительную информацию о файлах каталога
(например, подробный листинг команды ls -l), системы придется
"заглянуть" в метаданные файлов, что требует права на выполнения для
каталога. Право на выполнение также потребуется для каталога, в
который Вы захотите перейти (т.е. сделать его текущим) с помощью
команды cd.
T-бит, SUID и SGID
Наиболее внимательные пользователи быстро замечают, что помимо
стандартных "rwx" значений существуют еще и буквы "s" и "t". В
действительности, битовая маска прав доступа к файлам содержит 4
группы по 3 бита в каждой. Таким образом, команда chmod 755 это всего
лишь краткая запись полной формы команды: chmod 0755.
t-бит обычно используется с каталогами.
Обычно, когда t-бит для каталога не установлен, файл в данном каталоге
может удалить любой пользователь, имеющий доступ на запись к данному
файлу. Устанавливая t-бит на каталог мы меняем это правило таким
образом, что удалить файл из каталога может только владелец этого
каталога или файла.
Установить t-бит можно при помощи команд chmod a+tw somefile или chmod
1777 somefile.
Атрибуты SUID и SGID позволяют изменить права пользователя при запуске
на выполнения файла, имеющего эти атрибуты.
Запускаемая программа получает права доступа к системным ресурсам на
основе прав доступа пользователя, запустившего программу. Установка же
флагов SUID и SGID изменяет это правило таким образом, что назначает
права доступа к системным ресурсам исходя из прав доступа владельца
файла. Т.е. запущенный исполняемый файл, которым владеет
суперпользователь, получает права доступа к системным ресурсам на
уровне суперпользователя (фактически неограниченные). При этом
установка SUID приведет к наследованию прав владельца-пользователя
файла, а установка SGID -владельца-группы.
В завершении хочется отметить, что пользоваться такими мощными
атрибутами как SUID и SGID нужно с крайней осторожностью, особенно
подвергать пристальному вниманию программы и скрипты, владельцем
которых является root (суперпользователь), т.к. это потенциальная
угроза безопасности системы.
понедельник, 15 марта 2010 г.
Links2 - продвинутый консольный браузер для Linux
Источник: http://itshaman.ru/it-programmy-dlya-linux/85/links2-browser-linux-ubuntu
Сервер, работающий на ОС Linux, у хорошего системного администратора не имеет графического интерфейса, так как все системные ресурсы должны быть направлены в нужное русло и тратить их на вырисовывание всяких "окошечек" не хорошо.
Для того, чтобы выйти в Интернет на таком сервере и нужны консольные браузеры. Таким инструментом может выступать консольный бразер Links2, который не смотря на свою "консольность" умеет немало. Основным достоинством браузера Links2 является то, что он умеет подгружать картинки.
Peter Gervai разработал консольный браузер Links, который позднее разделился на 3 независимых дистрибутива: ELinks, Links Hacked и Links2.
Отличительная особенность ELinks заключается в наличие встроенного языка программирования Lua. Links Hacked - это попытка доработать браузер ELinks. Links2 - это консольный браузер, о котором пойдет речь далее.
Links2 входит в состав официального репозитория семейства операционных систем *buntu.
Для установки Links2 в *buntu:
Сервер, работающий на ОС Linux, у хорошего системного администратора не имеет графического интерфейса, так как все системные ресурсы должны быть направлены в нужное русло и тратить их на вырисовывание всяких "окошечек" не хорошо.
Для того, чтобы выйти в Интернет на таком сервере и нужны консольные браузеры. Таким инструментом может выступать консольный бразер Links2, который не смотря на свою "консольность" умеет немало. Основным достоинством браузера Links2 является то, что он умеет подгружать картинки.
Немного истории
Отличительная особенность ELinks заключается в наличие встроенного языка программирования Lua. Links Hacked - это попытка доработать браузер ELinks. Links2 - это консольный браузер, о котором пойдет речь далее.
Скриншоты
Описание
Сильные стороны Links2:
- Links2 является консольным браузером, по этому он работает без какой-либо графической оболочки.
- Браузер умеет загружать картинки.
- Links2 умеет добавлять WEB-страницу в закладки.
- Встроенный менеджер закачек.
- Корректно работает с сайтами, использующих frame.
- Links2 умеет обрабатывать JavaScript код на WEB-странице.
- Поддерживается работа через proxy.
- Есть возможность просмотра HTML-кода страницы..
- Есть версии для ОС: Windows, Linux и Unix.
- Ведется история посещенных сайтов.
- Составление "БАН"-листа ненужных изображений.
Слабые стороны Links2:
- Не поддерживается CSS. Сайты выводятся сплошным HTML-потоком.
- Не поддерживается работа с RSS.
- Не "вкладочный" интерфейс.
- Язык интерфейса: русский, английский и т.д.
- Лицензия: GNU GPL ver.2
- Домашняя страница:
Установка
Для установки Links2 в *buntu:
# sudo apt-get install links2
Для запуска браузера в консоли набираем: # links2 -g
пятница, 5 марта 2010 г.
Настройка conky: Индикация состояния системы в Linux
Источник: http://mydebianblog.blogspot.com/2007/10/conky.html
http://www.linuxcenter.ru/lib/articles/soft/conky_as_example.phtml
запуск -> conky
запуск как демона -> conky - d
запуск с другим файлом настройки -> conky - c имя_файла
Весьма удобно следить за состоянием своей системы, не слишком отрываясь от других задач. Здорово бросить взгляд на информативную панельку - и сразу получить всю информацию о работы системы, которая нужна. Именно для этих целей есть системные мониторы, например conky. Настроить conky в Linux очень просто, о чём и будет этот пост.
Умолчания, стиль и необходимость настройки conky
По умолчанию, установленный conky выглядит жутковато. Это такой тонкий намёк на то, что программу нужно подгонять под себя и свои представления об удобстве. Дело это до некоторой степени кропотливое, но сделав это раз, потом много раз экономим время.
Настраивается conky через свой конфиг, который нужно скопировать из /usr/share/doc/conky/examples/ в свой домашний каталог и переименовать в .conkyrc
Теперь открываем конфиг в своём любимом текстовом редакторе и начинаем его смотреть. Делится конфиг на две части: первая часть отвечает за то, как будет выглядеть системный монитор, а вторая - что он, собственно, будет отображать. Деление не строгое, и открыв конфиг, можно понять, почему.
Настраиваем conky под себя
В первой части конфиг довольно хорошо прокомментирован (во всяком случае, в Дебиане). Несколько наиболее важных параметров приведу ниже. Но прежде, чем вы начнёте запускать и пробовать, нужно кое-что учесть.
Во-первых, процесс это увлекательный и может отвлечь на долго (у меня это отняло вечер).
Во-вторых, процесс это исключительно интерактивный: меняете настройку - прибиваете текущий процесс conky - запускаете новый - смотрите - меняете настройку... и так далее. Лучше руководствоваться Первой Заповедью Радиотехники - "Не крути две ручки сразу". Иначе потом трудно ловить ошибки в конфиге и думать, что привело к нежелательным последствиям.
Итак, первая часть параметров отвечает за то, как будет выглядеть системный монитор. Здесь можно выбрать, в частности, шрифт и его параметры:
Это всё довольно просто - главное развлечение начинается при настройке переменных, которые и будут отображаться. Лучше всего за основу взять какой-нибудь образцовый конфиг отсюда и брать понравившиеся элементы. В этой замечательной статье (на русском!) есть много интересных идей - только читать её нужно с конца (пропуская философские отвлечения).
Короче говоря: вторая часть конфига выглядит примерно так
Надо сказать, что применение execi особенно для скриптов - дело довольно затратное, и скрипты лучше отрабатывать таким образом не часто (раз в несколько секунд).
Ниже - несколько наиболее интересных решений для отображения данных в conky.
${color lightgrey} Core: $color ${execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}
Для удобства я подсветил цветом: красным - команды conky, серым - текст, который будет выведен, синим - системные команды, которые дают необходимые значения, зелёным - пути до данных ACPI (у вас они будут, скорее всего, другими).
Более навороченные трюки, типа отображения степени зарядки батареи ноутбука, описываются опять-таки здесь ближе к концу статьи. Напоследок - скриншот моего conky и текст его конфига.

И текст конфига .conkyrc который это обеспечивает (внимание, для отображения заряда батарей используется обращение к скрипту, которого у вас может не быть). Вот образец конфигурационного файла conky
Скрипт для отображения заряда батареи /usr/bin/myscript/kmvbatterystate
СсылкиЕсть очень хорошая статья про conky, и даже на русском, но там вначале довольно много философии. Полный список переменных есть тут.
а если копируете статью - поставьте ссылку на оригинал!
http://www.linuxcenter.ru/lib/articles/soft/conky_as_example.phtml
запуск -> conky
запуск как демона -> conky - d
запуск с другим файлом настройки -> conky - c имя_файла
Весьма удобно следить за состоянием своей системы, не слишком отрываясь от других задач. Здорово бросить взгляд на информативную панельку - и сразу получить всю информацию о работы системы, которая нужна. Именно для этих целей есть системные мониторы, например conky. Настроить conky в Linux очень просто, о чём и будет этот пост.
Умолчания, стиль и необходимость настройки conky
По умолчанию, установленный conky выглядит жутковато. Это такой тонкий намёк на то, что программу нужно подгонять под себя и свои представления об удобстве. Дело это до некоторой степени кропотливое, но сделав это раз, потом много раз экономим время.
Настраивается conky через свой конфиг, который нужно скопировать из /usr/share/doc/conky/examples/ в свой домашний каталог и переименовать в .conkyrc
Теперь открываем конфиг в своём любимом текстовом редакторе и начинаем его смотреть. Делится конфиг на две части: первая часть отвечает за то, как будет выглядеть системный монитор, а вторая - что он, собственно, будет отображать. Деление не строгое, и открыв конфиг, можно понять, почему.
Настраиваем conky под себя
В первой части конфиг довольно хорошо прокомментирован (во всяком случае, в Дебиане). Несколько наиболее важных параметров приведу ниже. Но прежде, чем вы начнёте запускать и пробовать, нужно кое-что учесть.
Во-первых, процесс это увлекательный и может отвлечь на долго (у меня это отняло вечер).
Во-вторых, процесс это исключительно интерактивный: меняете настройку - прибиваете текущий процесс conky - запускаете новый - смотрите - меняете настройку... и так далее. Лучше руководствоваться Первой Заповедью Радиотехники - "Не крути две ручки сразу". Иначе потом трудно ловить ошибки в конфиге и думать, что привело к нежелательным последствиям.
Итак, первая часть параметров отвечает за то, как будет выглядеть системный монитор. Здесь можно выбрать, в частности, шрифт и его параметры:
# Xft font when Xft is enabledВремя обновления, если в этом нет насущной необходимости, лучше ставить 1-2 секунды, хотя можно и меньше (тогда возрастает потребление ресурсов):
xftfont Bitstream Vera Sans Mono:size=9
# Update interval in secondsРасположение по углам экрана, что тоже хорошо прокомментировано и потому понятно:
update_interval 2.0
# Text alignment, other possible values are commentedЕщё подробностей можно прочитать в официальном FAQ conky или, пользуясь своими знаниями английского, догадаться :-)
#alignment top_left
#alignment top_right
#alignment bottom_left
alignment bottom_right
Это всё довольно просто - главное развлечение начинается при настройке переменных, которые и будут отображаться. Лучше всего за основу взять какой-нибудь образцовый конфиг отсюда и брать понравившиеся элементы. В этой замечательной статье (на русском!) есть много интересных идей - только читать её нужно с конца (пропуская философские отвлечения).
Короче говоря: вторая часть конфига выглядит примерно так
${переменная параметры}Назначение переменных в основном понятно из их названий:
$элемент оформления
${color цветтекста}
${переменная параметры}
...
- exec выводит на экран текст, возвращаемый вызываемой программой;
- execbar и execgraph визуализируют вывод исполняемой команды в виде диаграммы или графика (выводимое значение должно лежать в пределах 0..100);
- execi и texeci запускают команду циклически с интервалом (texeci — с интервалом, заведомо большим времени исполнения). execibar и execigraph полностью аналогичны execbar и execgraph, но для циклического выполнения команд;
- if_running, if_existing и if_mounted — выводят всё вплоть до endif, если выполняется процесс, существует файл и монтирована точка монтирования, соответственно;
- else — выводить, если ложны все вышестоящие выражения.
Надо сказать, что применение execi особенно для скриптов - дело довольно затратное, и скрипты лучше отрабатывать таким образом не часто (раз в несколько секунд).
Ниже - несколько наиболее интересных решений для отображения данных в conky.
Показывать текущее время в формате часы:минуты:секундыНесколько более сложным является отображение ACPI-данных о процессоре или питании системы. В этом нам помогут замечательные программы cat и cut. Вот как, например, вывести информацию о температуре на процессоре и включения троттлинга:
${time %k:%M:%S}
Отображение занимаемой приложениями памяти
$mem/$memmax
Вот тут у меня был лёгкий конфуз: часто значения отображаемой памяти были неприлично маленькими - это происходит оттого, что не учитывается память, занятая кэшем.
Вывести три самых охочих до процессора приложения:
${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} Core: $color ${execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-}
Для удобства я подсветил цветом: красным - команды conky, серым - текст, который будет выведен, синим - системные команды, которые дают необходимые значения, зелёным - пути до данных ACPI (у вас они будут, скорее всего, другими).
Более навороченные трюки, типа отображения степени зарядки батареи ноутбука, описываются опять-таки здесь ближе к концу статьи. Напоследок - скриншот моего conky и текст его конфига.

И текст конфига .conkyrc который это обеспечивает (внимание, для отображения заряда батарей используется обращение к скрипту, которого у вас может не быть). Вот образец конфигурационного файла conky
# Conky advanced configuration background yes # Use Xft? use_xft yes # Xft font when Xft is enabled xftfont Bitstream Vera Sans Mono:size=9 # Text alpha when using Xft xftalpha 0.8 # Update interval in seconds update_interval 2.0 # This is the number of times Conky will update before quitting. # Set to zero to run forever. total_run_times 0 # Create own window instead of using desktop (required in nautilus) own_window no # If own_window is yes, you may use type normal, desktop or override own_window_type normal # Use pseudo transparency with own_window? own_window_transparent yes # If own_window is yes, these window manager hints may be used #own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager # Use double buffering (reduces flicker, may not work for everyone) double_buffer yes # Minimum size of text area minimum_size 300 5 # Draw shades? draw_shades yes # Draw outlines? draw_outline no # Draw borders around text draw_borders no # Draw borders around graphs draw_graph_borders no # Stippled borders? stippled_borders 8 # border margins border_margin 40 # border width border_width 1 # Default colors and also border colors default_color white default_shade_color black default_outline_color black # Text alignment, other possible values are commented #alignment top_left #alignment top_right #alignment bottom_left alignment bottom_right #alignment none # Gap between borders of screen and text # same thing as passing -x at command line gap_x 12 gap_y 12 # Subtract file system buffers from used memory? no_buffers yes # set to yes if you want all text to be in uppercase uppercase no # number of cpu samples to average # set to 1 to disable averaging cpu_avg_samples 2 # number of net samples to average # set to 1 to disable averaging net_avg_samples 2 # Force UTF8? note that UTF8 support required XFT override_utf8_locale no # Add spaces to keep things from moving about? This only affects certain objects. use_spacer no # Maximum size of buffer for user text, i.e. below TEXT line. #max_user_text 16384 # Allow for the creation of at least this number of port monitors (if 0 or not set, default is 16) #min_port_monitors 16 # Allow each port monitor to track at least this many connections (if 0 or not set, default is 256) #min_port_monitor_connections 256 # variable is given either in format $variable or in ${variable}. Latter # allows characters right after the variable and must be used in network # stuff because of an argument # stuff after 'TEXT' will be formatted on screen TEXT $nodename - $sysname $kernel on $machine $stippled_hr ${color lightgrey}Current time: $color ${time %k:%M:%S} - ${color lightgrey}Uptime:$color $uptime ${color lightgrey}- Load:$color $loadavg ${color lightgrey}CPU Usage:${color #cc2222} $cpu% ${cpubar} ${color blue}${cpugraph 0000ff 00ff00} ${color lightgrey}RAM Usage:$color $mem/$memmax - Swap Usage:$color $swap/$swapmax - $swapperc% ${color lightgrey}File systems: $color${fs_free /}/${fs_size /} ${fs_bar /} ${color lightgrey}Processes:$color $processes ${color grey}Running:$color $running_processes $stippled_hr ${color}Name PID CPU% MEM% ${color #ddaa00} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1} ${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2} ${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3} ${color}Mem usage ${color #ddaa00} ${top_mem name 1} ${top_mem pid 1} ${top_mem cpu 1} ${top_mem mem 1} ${color lightgrey} ${top_mem name 2} ${top_mem pid 2} ${top_mem cpu 2} ${top_mem mem 2} ${color lightgrey} ${top_mem name 3} ${top_mem pid 3} ${top_mem cpu 3} ${top_mem mem 3} $stippled_hr ${color blue}System health ${color lightgrey} ${color lightgrey} Core: $color ${execi 2 cat /proc/acpi/thermal_zone/THRM/temperature | cut -c26-} - critical 115 C - ${color lightgrey} Throttling state: $color ${execi 2 cat /proc/acpi/processor/CPU1/throttling | grep active | cut -c26-} ${color lightgrey} Core clock: $color ${execi 2 cat /proc/cpuinfo | grep 'cpu MHz' | cut -c12-} $stippled_hr ${color red}Energy subsystem: ${color lightgrey}Power: $color${execi 2 cat /proc/acpi/ac_adapter/AC0/state | cut -c26-} - ${color lightgrey}Charging state:$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep charging | cut -c26-} ${color lightgrey}Present rate :$color ${execi 2 cat /proc/acpi/battery/BAT0/state | grep 'present rate' | cut -c26-} - ${color lightgrey}Battery energy:${color green} ${execi 2 /usr/bin/myscript/kmvbatterystate}% $color $stippled_hr ${color #ddaa00}Port(s)${alignr}#Connections $color Inbound: ${tcp_portmon 1 32767 count} Outbound: ${tcp_portmon 32768 61000 count}${alignr}ALL: ${tcp_portmon 1 65535 count} ${color #ddaa00}Inbound Connection ${alignr} Local Service/Port$color ${tcp_portmon 1 32767 rhost 0} ${alignr} ${tcp_portmon 1 32767 lservice 0} ${tcp_portmon 1 32767 rhost 1} ${alignr} ${tcp_portmon 1 32767 lservice 1} ${tcp_portmon 1 32767 rhost 2} ${alignr} ${tcp_portmon 1 32767 lservice 2} ${color #ddaa00}Outbound Connection ${alignr} Remote Service/Port$color ${tcp_portmon 32768 61000 rhost 0} ${alignr} ${tcp_portmon 32768 61000 rservice 0} ${tcp_portmon 32768 61000 rhost 1} ${alignr} ${tcp_portmon 32768 61000 rservice 1} ${tcp_portmon 32768 61000 rhost 2} ${alignr} ${tcp_portmon 32768 61000 rservice 2}
Скрипт для отображения заряда батареи /usr/bin/myscript/kmvbatterystate
#!/bin/sh MAX=`cat /proc/acpi/battery/BAT0/info | grep 'design capacity:' | cut -b26-30` CUR=`cat /proc/acpi/battery/BAT0/state | grep remaining | cut -d':' -f2 | cut -d' ' -f7` PRC=$(( $CUR * 100 / $MAX )) echo $PRCЕщё раз напомню, что у вас пути в /proc к информации об ACPI могут быть другими.
СсылкиЕсть очень хорошая статья про conky, и даже на русском, но там вначале довольно много философии. Полный список переменных есть тут.
а если копируете статью - поставьте ссылку на оригинал!
Подписаться на:
Комментарии (Atom)
Ярлыки
- картинки (1)
- команды (7)
- скрипт (2)
- терминал (17)
- шахматы (1)
- apt (2)
- asterisk (2)
- chmod (1)
- clamav (1)
- CoffeeScript (1)
- conky (1)
- cron (1)
- deb (1)
- Freeciv (1)
- ftp (1)
- gedit (2)
- gem (3)
- gimp (1)
- git (4)
- grep (1)
- IceWM (1)
- IDE (1)
- joomla (4)
- links2 (1)
- Linux (13)
- mplayer (2)
- ntpdate (1)
- Philips (1)
- rails (8)
- ruby (22)
- SciTE (1)
- ssh (2)
- tftp (1)
- ubuntu (10)
- vim (6)
- web разработка (1)
- wget (1)
- Windows (1)
- www (4)
- Xming (1)
Архив блога
-
▼
2010
(51)
-
▼
марта
(16)
- Ruby FTP, копирование файла на FTP
- Создание и удаление папок в Ruby
- изменение качества изображения из командной строки
- Пересборка deb-пакета в Debian/Ubuntu
- Git через proxy
- Переводчик для VIM
- Консольные хитрости
- Пример скрипта
- Антивирус СlamAV
- Точное время в Debian
- Удаленное подключение к рабочему столу Linux из Wi...
- Установка и настройка IceWM в минимальной конфигур...
- Основы управления доступом к файлам
- Links2 - продвинутый консольный браузер для Linux
- Настройка conky: Индикация состояния системы в Linux
- Простой переводчик на Ruby
-
▼
марта
(16)


