Лекция по Linux в компании Thumbtack Technology Linux - Вопросы и ответы
* Access control
* Environment
* Users and Grops
* File system'Ы
* Init system
* Network
* Bash
find ./ -type f | sed -e 's/ /\\ /g' | xargs grep "шаблон поиска"
Drupal logo (Photo credit: Wikipedia) |
df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 7,9G 7,6G 0 100% / tmpfs 502M 0 502M 0% /lib/init/rw udev 497M 100K 497M 1% /dev tmpfs 502M 0 502M 0% /dev/shm
du -sh /
2,2G /
Чтобы получить список процессов которые до сих пор держат удалённые файлы, выполните следующую командуЗаписываем виртуалхост.yum install -y httpd mysql mysql-server php php-cli\ php-mysql php-common php-curl php-gd php-mcrypt php-suhosin
Создадим директорию сайта.cat >> /etc/httpd/conf/httpd.conf <<EOF NameVirtualHost *:80 <VirtualHost *:80> <Directory /opt/www/example.com> AllowOverride All </Directory> DocumentRoot /opt/www/example.com/ ServerName example.com ErrorLog logs/example.com-error_log CustomLog logs/example.com-access_log common </VirtualHost> EOF
Запишем httpd в автозагрузку и запустим сервис.mkdir -p /opt/www/example.com/
chkconfig --level 345 httpd on
service httpd start
rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-10.ius.el5.noarch.rpm rpm -Uvh http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-5-4.noarch.rpm
И на конец подключимся к esxi хосту, заархивируем каталог .ssh и скажем гипервизору, чтобы архив public_key.tgz распаковывался при каждой загрузке системы.ssh-copy-id root@esxi-host
Всё!!!ssh root@esxi-host X11 forwarding request failed on channel 0 You have activated Tech Support Mode. The time and date of this activation have been sent to the system logs . VMware offers supported, powerful system administration tools. Please see www.vmware.com/go/sysadmintools for details. Tech Support Mode may be disabled by an administrative user. Please consult the ESXi Configuration Guide for additional important information. ~ # tar -C / -czf public_key.tgz .ssh ~ # BootModuleConfig.sh --add=public_key.tgz --verbose Acquiring lock /tmp/bootbank.lck Copying public_key.tgz to /bootbank/public_key.tgz Editing /bootbank/boot.cfg to add module public_key.tgz ~ # exit ~ # Connection to esxi-host closed by remote host. Connection to esxi-host closed.
ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Created directory '/home/user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 41:0d:3b:e2:23:e1:24:a2:57:11:10:0e:b5:03:e8:0f user@scorpius-adm The key's randomart image is: +--[ RSA 2048]----+ |+.+oo. oo | |.+ . . . .. | |o = + . + | |.E * o . o | |. + o o S | | . . . . | | | | | | | +-----------------+
Virtual Network Computing logo (Photo credit: Wikipedia) |
English: Tor Logo (Photo credit: Wikipedia) |
Приступим к установке compat-wireless. По скольку версия compat-wireless сильно привязана к ядру, то качаем нужную ветку тут, либо выполним нижеуказанный скрипт.apt-get update apt-get install gawk bzip2 linux-headers-$(uname -r) -y apt-get build-dep linux-image-$(uname -r) -y
# Скачаем compat-wireless cd /usr/src wget $(wget -O - http://linuxwireless.org/en/users/Download/stable | \ grep "compat-wireless-$(read -n 3 KERN <<< $(uname -r); echo $KERN)" | \ gawk -Fref=\" '{ print $2 }' | gawk -F\" '{ print $1 }') # Распакуем его tar xjfv compat-wireless-* # И зайдём в директорию cd compat-wireless-*
Но этого мало. Теперь сделаем его исполняемым, и пропишем алиас в систему.cat > /sbin/modprobe.sh <<EOF #!/bin/bash if [[ \$1 == -l ]] then if [ -z \$2 ] then find /lib/modules/\$(uname -r) -name '*.ko' | sed -e "s#\\/lib\/modules\/\$(uname -r)\/##g" else find /lib/modules/\$(uname -r) -name '*.ko' | sed -e "s#\/lib\/modules\/\$(uname -r)\/##g" | grep \$2 fi else /sbin/modprobe \$@ fi EOF
Хотя в некоторых случаях и этого будет не достаточно. Если адрес к modprobe жестко указан в Makefile, то зайдите в директорию проекта и выполните следующее.chmod +x /sbin/modprobe.sh alias modprobe=/sbin/modprobe.sh echo "alias modprobe=/sbin/modprobe.sh" >> /etc/bash.bashrc
cp Makefile Makefile.save sed -i -e 's/^MODPROBE.*/MODPROBE := \/sbin\/modprobe.sh/g' Makefile
mysql-5.5/ mysql-dfsg-5.1/ nginx/ percona-toolkit/ php5/ php5-pecl/ pinba-mysql-engine/ redis/ ruby-passenger/
cat >> /etc/apt/sources.list <<EOF deb http://packages.dotdeb.org squeeze all deb-src http://packages.dotdeb.org squeeze all EOF wget http://www.dotdeb.org/dotdeb.gpg && cat dotdeb.gpg | sudo apt-key add - apt-get update apt-get dist-upgrade -y
apt-get update apt-get install apt-spy
apt-get install -y openssh-server openssh-client tar bzip2 pv screen rsync
yum install -y openssh-server openssh-clients tar bzip2 pv screen rsync
Для тех кто не очень понимает bash синтаксис поясню что делает этот скрипт.Не забудьте заменить "$HOST1" "$HOST2" на свои адреса хостов, а /mnt/data/ на свой путь к данным.
Теперь следует обговорить screen он умеет многое, и достоин отдельной статьи.ssh "$HOST1" screen tar cjf - /mnt/data/ | pv | ssh root@"$HOST2" "cd / && tar xjf - " rsync -vcazr -e ssh /mnt/data root@"$HOST2":/mnt/
ctrl a d # Используется для того чтобы свернуть терминал
screen -ls # Используется для того чтобы просмотреть список существующих терминалов
screen -r pid.pts-0.hostname # Используется для того чтобы вернуться в указанный терминал
screen -r # Используется для того чтобы вернуться в терминал если он открыт у вас один
VirtualBox (Photo credit: Wikipedia) |
Значит скорее всего у вас обновилось ядро в системы и вам нужны новые header'ы ядра. Установить их достаточно просто.dmesg | grep 'warning: `VirtualBox' [ 429.050250] warning: `VirtualBox' uses 32-bit capabilities (legacy support in use)
apt-get install linux-headers-$(uname -r) -y --force-yes
/etc/init.d/vboxdrv restart Stopping VirtualBox kernel modules:. Starting VirtualBox kernel modules:.
И о ужас мы использовали всё место на диске. Что же делать, но погодите у нас же используется VLM так что не расстраиваемся и принимаемся за работу.df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 7.4G 7.4G 0G 100% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 485M 45M 415M 10% /boot
В принципе вы уже можете отправлять почту, но по умолчанию в конфигурации указано что вы отправляете почту с хоста localhost.localdomainyum install sendmail sendmail-cf -y chkconfig --level 345 sendmail on /etc/init.d/sendmail start Starting sendmail: [ OK ] Starting sm-client: [ OK ]
apt-get update apt-get install -y subversion php5 php5-cli php5-mysql mysql-server mysql-client apache2 libapache2-mod-php5 \ php5-common php5-curl php5-gd php5-mcrypt php5-suhosin libapache2-mod-encoding libapache2-svn
rm /var/www/index.html git clone https://github.com/usvn/usvn.git /var/www/ mkdir /var/www/files/ chown -R www-data:www-data /var/www/ a2enmod rewrite /etc/init.d/apache2 restart
Учтите чтобы лог писался файл /var/log/sms.log должен иметь права на запись для пользователя от которого вы запускаете скрипт.
Теперь мы сохраним список установленных модулей PHP, удалим существующие модули из системы, и на базе сохранённого списка, установим новые модули PHP.cat > /etc/yum.repos.d/CentOS-Testing.repo <<EOF [c5-testing] name=CentOS-5 Testing baseurl=http://dev.centos.org/centos/\$releasever/testing/\$basearch/ enabled=1 gpgcheck=1 gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing includepkgs=php* EOF
rpm -qa |grep php > old_php.log yum erase php-* -y yum --enablerepo=c5-testing install $(cat old_php.log \ | sed -e 's/-5.*$//g' | sed -e 's/php/php53/g' \ | awk '{ printf $1" " }') -y
php -v PHP 5.3.3 (cli) (built: Feb 22 2012 19:38:14) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
/etc/init.d/httpd restart
илиFixed(Исправлено) Didn't find JVM under /home/username/.mozilla/plugins firefox: ../../../../src/plugin/solaris/plugin2/common/JavaVM.c:104: InitializeJVM: Assertion `foundJVM' failed.
то эта статья для вас.Fixed(Исправлено) Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
apt-get install samba -y #На всякий случай скопируем оригинальный конфига# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig #Создадим директории на которые будем ссылаться в конфиге# mkdir -p /srv/smb/pub/ mkdir -p /srv/smb/archive/ #Поскольку Samba у нас будет работать от пользователя nobody присвоим хранилищу его права# chown -R nobody /srv/smb/
English: Logo of American Power Conversion (Photo credit: Wikipedia) |
cat /var/log/dmesg | grep -i 'American Power Conversion' [ 1.570614] usb 6-2: Manufacturer: American Power Conversion [ 2.174944] generic-usb 0003:051D:0002.0001: hiddev0,hidraw0: USB HID v1.10 Device \ [American Power Conversion Back-UPS ES 525 FW:851.t3.I USB FW:t3] on usb-0000:00:1d.1-2/input0
Добавим в sources.list старый репозиторийPHP=`dpkg -l | grep -i php | awk '{ printf $2" " }'` apt-get purge ${PHP}
Объясним системе что нас интересует php версии ни как не выше 5.2cat >> /etc/apt/sources.list <<EOF deb http://archive.debian.org/debian/ lenny main deb-src http://archive.debian.org/debian/ lenny main EOF apt-get update
apt-get update apt-get install -y unzip php5 php5-cli php5-mysql mysql-server \ mysql-client apache2 libapache2-mod-php5 libfcgi-dev libmhash-dev sudo a2enmod actions rewrite /etc/init.d/apache2 restart Restarting web server: apache2 ... waiting .
проверим текущую версию демонаapt-get install vsftpd -y
Ставим необходимые компоненты для сборкиvsftpd -v vsFTPd version 2.3.2
apt-get build-dep vsftpd -y
... perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "ru_RU.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory Selecting previously deselected package bash-completion. (Reading database ... 23221 files and directories currently installed.) Unpacking bash-completion (from .../bash-completion_1%3a1.3-1ubuntu3_all.deb) ... Processing triggers for man-db ... locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory Setting up bash-completion (1:1.3-1ubuntu3) ... ...
Скопируем плагин в директорию firefoxcd ~/get # перейдём в директорию в которую мы установили JRE ls jre-* # посмотрим как называется файл jre-6u30-linux-i586.bin # chmod +x jre-6u30-linux-i586.bin # сделаем его исполняемым ./jre-6u30-linux-i586.bin # и выполним
mkdir ~/.mozilla/plugins/ cp `find ./dir/ -type f -name libnpjp2.so` ~/.mozilla/plugins/