Wednesday, November 21, 2018
Text Size

EasyBlog

This is some blog description about this site

  • Home
    Home This is where you can find all the blog posts throughout the site.
  • Categories
    Categories Displays a list of categories from this blog.
  • Tags
    Tags Displays a list of tags that have been used in the blog.
  • Bloggers
    Bloggers Search for your favorite blogger from this site.
  • Team Blogs
    Team Blogs Find your favorite team blogs here.
  • Login
    Login Login form

Uncategorized

Subcategories from this category: Uncategorized, Soft, CMS, joomla, OS, Linux, CentOS

https://yvision.kz/post/528726

 

В этой записке будут собраны примеры контроля скорости трафика. Это нужно чтобы входящий и исходящий канал не забивался. Например один пользователь смотрит ролик на youtube.com и отправляет большое...


Hits: 30
0

Information About Engineering Sample Processors

 

What is an engineering sample (ES) processor?
Engineering sample (ES) processors are also known as qualification sample processors. They are pre-production processors Intel loans to original equipment manufacturers (OEMs), original device manufacturers (ODMs), and independent software vendors (ISVs) to be used in the product design cycle before product launch.

These processors often include more features than production processors for customer pre-production evaluation and test purposes. ES processors:

  • Produced by Intel are the sole property of Intel.
  • Produced by Intel are Intel Confidential.
  • Are provided by Intel under nondisclosure and/or special loan agreement terms with restrictions on the recipient's handling and use.
  • Are not for sale or resale.
  • May not have passed commercial regulatory requirements.
  • Are not covered under Intel warranty and are generally not supported by Intel.
How do I identify ES processors produced by Intel?The easiest way to tell if you have an ES processor produced by Intel is to look at the processor topside markings. If you have a four or five-digit Qspec listed like the one pictured below, you have an engineering sample. A production processor has a five digit sSpec on the topside markings. It usually begins with S, like SLB9L.

If you don't find ink or laser markings, the processor may be an unmarked ES processor. Contact Intel if you have an unmarked ES processor.
Unmarked Intel ES processor

You can also use the Intel® Processor Identification Utility to help identify if a particular processor is an ES processor produced by Intel.

Once you install and run the Intel Processor Identification Utility on an ES processor, the following message appears in the text box:

The following Intel® Processor appears to be an engineering sample, not a production processor. The utility is designed to support production processors only. Sample processors are not warranted by Intel and are not intended for resale.

Can I get ES processors from Intel?Due to the pre-production nature of ES processors, they are generally only loaned to OEMs, ODMs, and ISVs for pre-production test and evaluation work under specific contractual terms and conditions to assure the protection of assets and confidential information.

ES processors are not made available to the general public by Intel.

Contact your vendor or place of purchase if you have received an ES processor in place of a production processor.

If you have other questions or concerns, you can contact:

Do you replace engineering samples?No, engineering samples are pre-production units, issued free of charge and are not eligible for warranty.

 

Hits: 138
0

декілька днів процес gvfs-metadata недуже замітно виносив процесор на 100% 

перезавантаження сервера також не допомагає

через менеджер процесів ... htop     ....  top  це також не зназу зрозуміло

вирішення 

видаляємо файл 

/root/.local/share/gvfs-metadata

припиняємо процес 

rm -rf ~/.local/share/gvfs-metadata
pkill gvfsd-metadata

чекаємо хвилинку .. дві ..три .. і файловий менеджер відновить свою роботу ... систему перезавантажувати непотрібно

https://ubuntuforums.org/showthread.php?t=1421580&page=2&s=7ea354ba95dd304920d86421c9489723

 

Hits: 169
0

 

https://tech.tiq.cc/2014/02/how-to-set-up-an-email-server-with-postfix-and-dovecot-without-mysql-on-debian-7/

The used postfix version is 2.9.6, the used dovecot version is 2.1.7.

Hostname, MX and rDNS record

Before doing anything you should change the hostname of your server, set a MX record and set the rDNS record.

The procedure for this varies depending on your domain and server provider but if you can not do either you will not be able to send and/or receive mails.

The following guide assumes you have set your hostname, mx and rDNS record to “mx.example.com”.

Installation and users

Install postfix and dovecot:

apt-get install postfix dovecot-core dovecot-pop3d dovecot-imapdSelect “Internet Site” during the installation process of postfix.

Add user and group vmail:

groupadd -g 5000 vmail useradd -s /usr/sbin/nologin -u 5000 -g 5000 vmailAdd user postfix and dovecot to group vmail:

usermod -aG vmail postfix usermod -aG vmail dovecot

Folders, virtual mailbox/domains/aliases and logs

Add the folder the mails will be stored in and give rights to user vmail:

mkdir -p /var/mail/vhosts/example.com chown -R vmail:vmail /var/mail/vhosts chmod -R 775 /var/mail/vhostsCreate dovecot log file:

touch /var/log/dovecot chgrp vmail /var/log/dovecot chmod 660 /var/log/dovecot

Virtual mailboxes

nano /etc/postfix/vmailboxNew mailboxes will be added like so:

you@example.com example.com/you/You do not have to enter anything here though, the add user script towards the end of this post will do all the work. To only create an empty file use “touch” instead of “nano”.
This defines the mailbox you@example.com and where your mails will be stored (/var/mail/vhosts/example.com/you/).
YOU HAVE TO EXECUTE THE FOLLOWING TO TAKE OVER CHANGES:

postmap /etc/postfix/vmailbox

Virtual aliases

nano /etc/postfix/virtual_aliasHere you can set aliases if you want:

@example.com you@example.comThe above example redirects all mails sent to example.com to you@example.com.
YOU HAVE TO EXECUTE THE FOLLOWING TO TAKE OVER CHANGES:

postmap /etc/postfix/virtual_alias

Virtual domains

nano /etc/postfix/virtual_domainsSimply enter your domain:

example.com

SSL certificate

mkdir /etc/dovecot/ssl cd /etc/dovecot/ssl openssl req -new -newkey rsa:3072 -nodes -keyout mailserver.key -days 9999 -x509 -out mailserver.crtNote that the “Common Name” has to be the domain of your mail server (mx.yourdomain.com).

Configuration files

All lines that you need to change have the string “CHANGETHIS” in them.

/etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP biff = no append_dot_mydomain = no recipient_delimiter = + readme_directory = no myhostname = mx.example.comCHANGETHIS mydomain = mx.example.comCHANGETHIS myorigin = $mydomain inet_interfaces = all mydestination = localhost, $mydomain mynetworks = 127.0.0.0/8 virtual_mailbox_domains = /etc/postfix/virtual_domains virtual_mailbox_base = /var/mail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_alias_maps = hash:/etc/postfix/virtual_alias virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_transport = virtual dovecot_destination_recipient_limit = 1 mailbox_size_limit = 0 ##SASL## smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $mydomain broken_sasl_auth_clients = yes ##TLS## smtpd_use_tls=yes smtpd_tls_security_level = may smtpd_tls_auth_only = no smtpd_tls_cert_file=/etc/dovecot/ssl/mailserver.crt smtpd_tls_key_file=/etc/dovecot/ssl/mailserver.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_tls_received_header = yes tls_random_source = dev:/dev/urandom smtpd_tls_security_level = may smtp_tls_security_level = may ##restrictions## smtpd_helo_required=yes strict_rfc821_envelopes = yes disable_vrfy_command = yes smtpd_delay_reject = yes ##limit rate## anvil_rate_time_unit = 60s smtpd_client_connection_rate_limit = 5 smtpd_client_connection_count_limit = 5 smtpd_error_sleep_time = 5s smtpd_soft_error_limit = 2 smtpd_hard_error_limit = 3 ################## smtpd_helo_restrictions= reject_non_fqdn_hostname, reject_invalid_helo_hostname, reject_unknown_helo_hostname smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client dul.dnsbl.sorbs.net smtpd_recipient_limit = 250 broken_sasl_auth_clients = yes #message_size_limit = 120480000 ##remove IP header## # requires postfix-pcre (apt-get install postfix-pcre) #header_checks has the following content: #/^\s*(Received: from)[^\n]*(.*)/ REPLACE $1 [127.0.0.1] (localhost [127.0.0.1])$2 # #smtp_header_checks = pcre:/etc/postfix/header_checks

/etc/dovecot/dovecot.conf

auth_mechanisms = plain login disable_plaintext_auth = no log_path = /var/log/dovecot mail_location = maildir:/var/mail/vhosts/%d/%n passdb { args = /var/mail/vhosts/%d/shadow driver = passwd-file } protocols = imap pop3 service auth { unix_listener /var/spool/postfix/private/auth { group = vmail mode = 0660 user = postfix } unix_listener auth-master { group = vmail mode = 0600 user = vmail } } ssl_cert = </etc/dovecot/ssl/mailserver.crt ssl_key = </etc/dovecot/ssl/mailserver.key userdb { args = /var/mail/vhosts/%d/passwd driver = passwd-file } protocol lda { auth_socket_path = /var/run/dovecot/auth-master hostname = mx.yourdomain.comCHANGETHIS mail_plugin_dir = /usr/lib/dovecot/modules mail_plugins = sieve postmaster_address = postmaster@example.comCHANGETHIS }

/etc/postfix/master.cf

smtp inet n - - - - smtpd 8080 inet n - - - - smtpd smtps inet n - - - - smtpd submission inet n - n - - smtpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp relay unix - - - - - smtp showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

Script to add users

#!/bin/bash USAGE="Usage: $0 EMAIL PASSWORD [BASEDIR]"; if [ ! -n "$2" ] then echo $USAGE; exit 1; fi USERNAME=$(echo "$1" | cut -f1 -d@); DOMAIN=$(echo "$1" | cut -f2 -d@); ADDRESS=$1; PASSWD=$2; if [ -n "$3" ] then if [ ! -d "$3" ] then echo $USAGE; echo "BASEDIR must be a valid directory!"; echo "I would have tried, $(postconf | grep ^virtual_mailbox_base | cut -f3 -d' ')"; exit 2; else BASEDIR="$3"; fi else BASEDIR="$(postconf | grep ^virtual_mailbox_base | cut -f3 -d' ')"; fi if [ -f /etc/postfix/vmailbox ] then echo "Adding Postfix user configuration..." echo $ADDRESS $DOMAIN/$USERNAME/ >> /etc/postfix/vmailbox postmap /etc/postfix/vmailbox if [ $? -eq 0 ] then echo "Adding Dovecot user configuration..." echo $ADDRESS::5000:5000::$BASEDIR/$DOMAIN/$ADDRESS>> $BASEDIR/$DOMAIN/passwd echo $ADDRESS":"$(doveadm pw -p $PASSWD) >> $BASEDIR/$DOMAIN/shadow chown vmail:vmail $BASEDIR/$DOMAIN/passwd && chmod 775 $BASEDIR/$DOMAIN/passwd chown vmail:vmail $BASEDIR/$DOMAIN/shadow && chmod 775 $BASEDIR/$DOMAIN/shadow /etc/init.d/postfix reload fi fiAdd a new mail user with ./file_name_of_script user@example.com desiredpassword

If you only copy/pasted commands so far, you will probably need to restart dovecot:

/etc/init.d/dovecot restart

Mail client configuration

The configuration details are:

SMTP, IMAP and POP3 server: mx.example.com
SMTP Port: 25 (or 587, or 8080. In some networks, port 25 and 587 outgoing are blocked)
IMAP Port: 143
POP3 Port: 110

username: user@example.com
(NOT just “user”)

You will receive a warning message for the first time you connect to each, SMTP, IMAP and POP3, because you are using a self-signed certificate.

Hits: 195
0

Posted by on in Uncategorized

 

 

mailq | tail -n +2 | head -n -2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if (($7 == "registration@facebookmail.com")) print $1 }' | tr -d '*!' | postsuper -d -

 

mailq | tail -n +2 | awk 'BEGIN { RS = "" } / falko@example\.com$/ { print $1 }' | tr -d '*!' | postsuper -d -

 

 

 

 

#!/bin/bash if [ "$#" -eq 0 ] then echo "No arguments supplied" echo "Usage: $0 sender@example.com somedomain.com" >&2 exit 1 fi read -p "Do you want to delete all queued messages from $1 to $2 ? " -r echo if [[ $REPLY =~ ^[Yy]$ ]] then echo -e "Postfix Warning: Deleting all queued messages from $1 to $2" mailq | tail -n +2 | head -n -2 | grep -v '^ *(' | awk -v sender="$1" -v domain="$2" 'BEGIN { RS = "" } { if (($7 == sender) && ($8 ~ domain)) print $1 }' | tr -d '*!' | postsuper -d - echo "Operation completed ..." else echo "Operation aborted ..." fi
 
 
 
Hits: 0
0

Posted by on in Uncategorized

 

 

mailq | tail -n +2 | head -n -2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if (($7 == "registration@facebookmail.com")) print $1 }' | tr -d '*!' | postsuper -d -

 

mailq | tail -n +2 | awk 'BEGIN { RS = "" } / falko@example\.com$/ { print $1 }' | tr -d '*!' | postsuper -d -

 

 

 

 

#!/bin/bash if [ "$#" -eq 0 ] then echo "No arguments supplied" echo "Usage: $0 sender@example.com somedomain.com" >&2 exit 1 fi read -p "Do you want to delete all queued messages from $1 to $2 ? " -r echo if [[ $REPLY =~ ^[Yy]$ ]] then echo -e "Postfix Warning: Deleting all queued messages from $1 to $2" mailq | tail -n +2 | head -n -2 | grep -v '^ *(' | awk -v sender="$1" -v domain="$2" 'BEGIN { RS = "" } { if (($7 == sender) && ($8 ~ domain)) print $1 }' | tr -d '*!' | postsuper -d - echo "Operation completed ..." else echo "Operation aborted ..." fi
 
 
 
Hits: 230
0

Posted by on in Uncategorized

 https://wiki.openwrt.org/doc/howto/usb.i2c-tiny-usb

https://github.com/harbaum/I2C-Tiny-USB

 

Introduction

Several routers and embedded devices with OpenWRT-support are equipped with one or more USB ports. In order not to risk your warranty by opening your device and soldering an I²C bus to the GPIOs, you can use an USB-I²C adapter to connect to your I²C-devices (e.g. temperature sensors, RTCs, AD-converters, GPIO-expanders, LCD-Drivers). One of those adapters is called https://wiki.openwrt.org/lib/tpl/openwrt/../../images/external-link.png");">i2c-tiny-usb, developed by Till Harbaum. Biggest advantage is the low price (though not as cheap as the GPIO mod) and the support in the Linux kernel (thus making it possible to connect it to your computer running a recent Linux distribution and test it). Though you need some basic soldering skills, and at the moment you need to build OpenWRT from source.

Compiling the kernel module

Note: This module is now in trunk, called kmod-i2c-tiny-usb. You can use a https://wiki.openwrt.org/lib/tpl/openwrt/../../images/external-link.png");">snapshot and install this kernel module with opkg.
Follow the build instructions until you reach the topic building images. At that point you have to edit you kernel configuration:

make kernel_menuconfigMake sure the following items are selected:

  • Device Drivers > I2C support > I2C device interface <*> (to get access through /dev/i2c-X)
  • Device Drivers > I2C support > I2C Hardware Bus support > Tiny-USB adapter <*>
Continue with the build instructions.

Using the I²C bus - kernel module

Since the module is compiled into the kernel, the I2C-Tiny-USB adapter can be plugged in. The successful registration can be tested:

dmesg | tail usb 1-3.3: new low speed USB device using ehci_hcd and address 5 usb 1-3.3: New USB device found, idVendor=0403, idProduct=c631 usb 1-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-3.3: Product: i2c-tiny-usb usb 1-3.3: Manufacturer: Till Harbaum usb 1-3.3: configuration #1 chosen from 1 choice i2c-tiny-usb 1-3.3:1.0: version 1.05 found at bus 001 address 005 i2c-adapter i2c-0: connected i2c-tiny-usb device usbcore: registered new interface driver i2c-tiny-usbThe same results are achieved by loading the kernel module by insmod. The current trunk module within kmod-i2c-tiny-usb package works just fine (requiring also kmod-i2c-core package).

Using the I²C bus - using the bus

First install the i2c-tools package. This will provide all necessary tools for you to work with the bus.

Searching for the bus

As you already can see in the dmesg listing, the i2c-0 device was created. The device node is visible under /dev/i2c-0. First of all, check the device is also visible for i2c tools. Running

i2cdetect -l

should print something like

i2c-0 i2c i2c-tiny-usb at bus 001 device 004 I2C adapter

This is a good sign. We can show the implemented functions by running

i2cdetect -F 0

and it will print something like

Functionalities implemented by /dev/i2c-0: I2C yes SMBus Quick Command yes SMBus Send Byte yes SMBus Receive Byte yes SMBus Write Byte yes SMBus Read Byte yes SMBus Write Word yes SMBus Read Word yes SMBus Process Call yes SMBus Block Write yes SMBus Block Read no SMBus Block Process Call no SMBus PEC no I2C Block Write yes I2C Block Read yes

Searching for the devices

Now, we can search for devices, connected to the bus:

i2cdetect 0

will scan the bus and show available devices, similar to this:

WARNING! This program can confuse your I2C bus, cause data loss and worse! I will probe file /dev/i2c-0. I will probe address range 0x03-0x77. Continue? [Y/n] 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: – – – – – – – – – – – – – 10: – – – – – – – – – – – – – – – – 20: 20 – – – – – – – – – – – – – – – 30: – – – – – – – – – – – – – – – – 40: – – – – – – – – – – – – – – – – 50: – – – – – – – – – – – – – – – – 60: – – – – – – – – – – – – – – – – 70: – – – – – – – –

Should you be anoyed by the Y/n question, you can use the -y switch to avoid it ;)

As you can see, I have an i2c device accessible on address 0x20 on the bus number 0.

Accessing the example device

My device is actually a https://wiki.openwrt.org/lib/tpl/openwrt/../../images/external-link.png");">MCP23017 - 16 port GPIO expander. First I have to set the directions of the inputs and outputs - as this device possess 2 ports (A and B), I have to set the direction for both of them - setting a bit to 0 will cause it to switch to output, setting the bit to 1 will cause to switch to input. The address to set the direction for port A is 0x00, for port B it's 0x01. Therefore to set the first 8 channels (port A) to output, I'd run

i2cset -y 0 0x20 0x00 0

That means use the device at the address 0x20 on the bus /dev/i2c-0, set its address 0x00 to zero value. The -y switch is there just to avoid the Y/n question. Also, to set the port B to input, I'd issue following command:

i2cset -y 0 0x20 0x01 0xff

This will set all the pins for port B to input. To set the actual value for port A, the address 0x12 is utilized. Similar, for port B, the address is 0x13. Therefore to set first bit to logical 1, I'd issue (assuming I already set the port's bit for output):

i2cset -y 0 0x20 0x12 1

Should you have some LED connected to the port, it will shine bright now. To turn it off, simply issue the following:

i2cset -y 0 0x20 0x12 0

Should some input be set on the port B, one can read its value by using following command:

i2cget -y 0 0x20 0x13

The result will be something like 0x00 (corresponding to the logical values presented to the actual pins).

Using this approach, you can enrich the OpenWRT device with multiple I/O channels.

I've already tested MCP23017, MCP23008, some i2c temperature sensors and EEPROM - all working just fine.

Precaution

This I²C bus operates at 5V. Make sure not to connect I²C devices incompatible with this voltage level!

Hits: 308
0
Install the necessary packages before you can build/install ssh2 extension
yum install gcc php-devel php-pear libssh2 libssh2-devel make
Install the extension, (hit enter for autodetect when it prompts you)
pecl install -f ssh2
Once the install is completed, you just have to tell PHP to load the extension when it boots.echo extension=ssh2.so > /etc/php.d/ssh2.ini
Restart your webserver and test to see if the changes took effect.
service httpd restart
You can check it installed with the following command
php -m | grep ssh2
Hits: 212
0

розписувати шось немає бажання .. 

спробую залишити основні теми і методики .. 

мета така .. є два диска які працюють в масиві mdadm raid1 

два диска ідентичні 

на кожному диску є по два розділа .. 

перший розділ знаходиться в робочому масиві з під якого і працює вся система 

другий розділ нерозмічений 

крок 1 

видаляємо одну складову масиву і отримуємо масив з одним диском 

той диск який ми отримали вільний форматуємо і робимо на ньому лише один великий том 

додаємо цей один велики том до існуючого масиву 

синхронізуємо і очікуємо поки масив завершить синхронізацію 

завершилася синхронізація тепер встановлюємо grub на диск в якому один розділ 

видаляємо з масиву диск в якому є два розділи 

масив у нас тепер получається знову з одним диском в якому є незайняте місце .. 

видаляємо з масиву бітмап (цей крок потрібен але я незнаю до кінця механізму що він робить.. но бітмап теоретично відповідає за якусь розмітку диска )

робимо масиву grow (вирощуємо масив до максимального скільки є місця нового на диску)

вертаємо бітмап mdadm --grow /dev/md127 --bitmap internal

тепер кажемо файловій системі зайняти все це місце 

теоретично все ... наш масив став більшим .. 

!!!!!!!!! на всяк випадок щоб зайвий раз не думати ще раз встановлюємо grub 

!!!!!!!!! перевіряємо  /boot/grub/grub.conf дивимося чи там все добре написано і зокрема дивимося на шось таке :

root (hd0,0) (перший нуль означає що завантажувати з першого диску який ініціалізує біос .. це я так на хлопський розум пробую пояснити ..... а другий нулик означає з якого розділу завантажувати ... для прикладу якщо груб встановлений на /dev/sda1 тоді все так і залишаємо а якщо груб встановлений на /dev/sda2 тоді треба змінити на шось таке root (hd0,1) )

!!!!!!! перевіряємо fstab

---------------

тепер до масиву треба додати другу складову яку ми робимо з попередньо видаленого диска який мав два розділи ...

пробуємо додати через графічний інтерфейс "дискова утиліта" але вискакує помилка

пробуємо скопіювати з одного на другий диск файлову систему але також отримуємо помилку 

тоді додаємо параметр forced все копіюється ..начебто все добре ... 

додаємо диск до масиву ..

очікуємо синхронізації.. 

встановлюємо груб на новосинхронізований диск ..

здається все малоб працювати ... 

ремарка: оскільки система парцююча .. ми неможемо зробити чекдіск ..але бажано булоб його зробити ...але треба тоді вимикати систему...

 

тепер все що написано зверху кинуто як воно виглядає в консолі: 

 

 [root@cyrax ~]# mdadm --manage /dev/md127 --add /dev/sdi1
mdadm: added /dev/sdi1
[root@cyrax ~]# cat /proc/mdstat
Personalities : [raid1]
md122 : active raid1 sdb3[0] sda3[2]
488252928 blocks super 1.2 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk

md123 : active raid1 sdb2[1] sda2[2]
488244928 blocks super 1.2 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk

md124 : active raid1 sdb1[1] sda1[2]
488244864 blocks super 1.2 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk

md125 : active raid1 sdb4[1] sda4[2]
488244928 blocks super 1.2 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk

md126 : active raid1 sde1[2] sdd1[1]
1953380928 blocks super 1.2 [2/2] [UU]
bitmap: 11/15 pages [44KB], 65536KB chunk

md127 : active raid1 sdi1[3] sdc1[2]
125033816 blocks super 1.0 [2/1] [U_]
[>....................] recovery = 0.0% (9600/125033816) finish=650.0min speed=3200K/sec
bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>
[root@cyrax ~]# echo 450000 > /proc/sys/dev/raid/speed_limit_min
[root@cyrax ~]# watch cat /proc/mdstat
[root@cyrax ~]# service ups stop
Зупиняється монітор UPS: [ ГАРАЗД ]
Зупиняється upsd: ^[[A [ ГАРАЗД ]
Зупиняється upsdrvctl: [ ГАРАЗД ]
[root@cyrax ~]# echo 50000 > /proc/sys/dev/raid/speed_limit_min
[root@cyrax ~]# watch cat /proc/mdstat
[root@cyrax ~]# echo 200000 > /proc/sys/dev/raid/speed_limit_min
[root@cyrax ~]# watch cat /proc/mdstat
[root@cyrax ~]# echo 100000 > /proc/sys/dev/raid/speed_limit_min
[root@cyrax ~]# watch cat /proc/mdstat
[root@cyrax ~]# echo 50000 > /proc/sys/dev/raid/speed_limit_min
[root@cyrax ~]# watch cat /proc/mdstat
[root@cyrax ~]# echo 100000 > /proc/sys/dev/raid/speed_limit_min
[root@cyrax ~]# watch cat /proc/mdstat
[root@cyrax ~]# mdadm --examine /dev/md127
mdadm: No md superblock detected on /dev/md127.
[root@cyrax ~]# mdadm --examine /dev/sdi1
/dev/sdi1:
Magic : a92b4efc
Version : 1.0
Feature Map : 0x1
Array UUID : f3c9263f:6ae4f489:1fc15cc0:e38807fc
Name : localhost.localdomain:ssdraid
Creation Time : Mon Dec 14 12:11:26 2015
Raid Level : raid1
Raid Devices : 2

Avail Dev Size : 468858728 (223.57 GiB 240.06 GB)
Array Size : 125033816 (119.24 GiB 128.03 GB)
Used Dev Size : 250067632 (119.24 GiB 128.03 GB)
Super Offset : 468858864 sectors
Unused Space : before=0 sectors, after=218791216 sectors
State : active
Device UUID : ca260048:6d6f986f:19ec8dce:622f5740

Internal Bitmap : -16 sectors from superblock
Update Time : Thu Dec 14 13:47:22 2017
Bad Block Log : 512 entries available at offset -8 sectors
Checksum : db51a8ff - correct
Events : 985285


Device Role : Active device 1
Array State : .A ('A' == active, '.' == missing, 'R' == replacing)
[root@cyrax ~]# mdadm -D /dev/md127
/dev/md127:
Version : 1.0
Creation Time : Mon Dec 14 12:11:26 2015
Raid Level : raid1
Array Size : 125033816 (119.24 GiB 128.03 GB)
Used Dev Size : 125033816 (119.24 GiB 128.03 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Thu Dec 14 13:48:05 2017
State : active, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

Name : localhost.localdomain:ssdraid
UUID : f3c9263f:6ae4f489:1fc15cc0:e38807fc
Events : 985333

Number Major Minor RaidDevice State
0 0 0 0 removed
3 8 129 1 active sync /dev/sdi1
[root@cyrax ~]# mdadm --grow /dev/md127 --bitmap none
[root@cyrax ~]#

[root@cyrax ~]# mdadm --grow /dev/md127 --bitmap none
[root@cyrax ~]# mdadm --grow /dev/md127 --size max
mdadm: component size of /dev/md127 has been set to 234429364K
[root@cyrax ~]# mdadm --grow /dev/md127 --bitmap internal
[root@cyrax ~]# mdadm -D /dev/md127
/dev/md127:
Version : 1.0
Creation Time : Mon Dec 14 12:11:26 2015
Raid Level : raid1
Array Size : 234429364 (223.57 GiB 240.06 GB)
Used Dev Size : 234429364 (223.57 GiB 240.06 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Thu Dec 14 13:50:11 2017
State : active, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

Name : localhost.localdomain:ssdraid
UUID : f3c9263f:6ae4f489:1fc15cc0:e38807fc
Events : 985502

Number Major Minor RaidDevice State
0 0 0 0 removed
3 8 129 1 active sync /dev/sdi1
[root@cyrax ~]#



[root@cyrax ~]# grub
Probing devices to guess BIOS drives. This may take a long time.
Unknown partition table signature


GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> find /boot/grub/stage1
find /boot/grub/stage1
(hd8,0)
grub> root (hd8,0)
root (hd8,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd8)
setup (hd8)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd8)"... 27 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd8) (hd8)1+27 p (hd8,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> ^[[A^[[B^C
[root@cyrax ~]# resize2fs /dev/md127
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/md127 is mounted on /; on-line resizing required
old desc_blocks = 8, new_desc_blocks = 14
Performing an on-line resize of /dev/md127 to 58607341 (4k) blocks.
The filesystem on /dev/md127 is now 58607341 blocks long.

[root@cyrax ~]#


[root@cyrax ~]# mdadm --examine /dev/md127
mdadm: No md superblock detected on /dev/md127.
[root@cyrax ~]# mdadm --examine /dev/sdi
/dev/sdi:
MBR Magic : aa55
Partition[0] : 468858880 sectors at 2048 (type fd)
[root@cyrax ~]# mdadm --examine /dev/sdc
/dev/sdc:
MBR Magic : aa55
[root@cyrax ~]# sfdisk -h
sfdisk: invalid option -- 'h'
sfdisk (util-linux-ng 2.17.2)
Використання: sfdisk [параметри] пристрій ...
пристрій: щось на зразок /dev/hda чи /dev/sda
корисні параметри:
-s [або --show-size]: вивести розмір розділу
-c [або --id]: вивести або змінити ідентифікатор розділу
-l [або --list]: вивести розділи кожного пристрою
-d [або --dump]: те ж саме, але у форматі прийнятному для подальшого вводу
-i [або --increment]: кількість циліндрів починається з 1, а не з 0
-uS, -uB, -uC, -uM: ввід/вивід у одиницях сектори/блоки/циліндри/Мб
-T [або --list-types]:вивести всі відомі типи розділів
-D [або --DOS]: для DOS-сумісності: втрачається трохи простору
-R [або --re-read]: змусити ядро перечитати таблицю розділів
-N# : змінити лише розділ з номером #
-n : не записувати нічого на диск
-O file : зберегти у файл сектори, які будуть перезаписані
-I file : відновити ці сектори знову
-v [або --version]: вивести версію
-? [або --help]: вивести це повідомлення
небезпечні параметри:
-g [або --show-geometry]: вивести видану ядром геометрію
-G [or --show-pt-geometry]: вивести видану, яку визначено з таблиці розділів
-x [або --show-extended]: також вивести перелік розширених розділів
або очікувати їх дескриптори при вводі
-L [або --Linux]: не скаржитись на несуттєві для Linux речі
-q [або --quiet]: не виводити попередження
Ви можете перевизначити виявлену геометрію використовуючи:
-C# [або --cylinders #]:встановити кількість циліндрів
-H# [або --heads #]: встановити кількість головок
-S# [або --sectors #]: встановити кількість секторів
Ви можете вимкнути перевірку логічності за допомогою:
-f [або --force]: виконувати команди примусово, навіть безглузді
[root@cyrax ~]# sfdisk -d /dev/sdc
# partition table of /dev/sdc
unit: sectors

/dev/sdc1 : start= 0, size= 0, Id= 0
/dev/sdc2 : start= 0, size= 0, Id= 0
/dev/sdc3 : start= 0, size= 0, Id= 0
/dev/sdc4 : start= 0, size= 0, Id= 0
[root@cyrax ~]# sfdisk -d /dev/sdi
# partition table of /dev/sdi
unit: sectors

/dev/sdi1 : start= 2048, size=468858880, Id=fd
/dev/sdi2 : start= 0, size= 0, Id= 0
/dev/sdi3 : start= 0, size= 0, Id= 0
/dev/sdi4 : start= 0, size= 0, Id= 0
[root@cyrax ~]# sfdisk -d /dev/sdi | sfdisk /dev/sdb
Перевіряється, що ніхто наразі не використовує диск ...
BLKRRPART: Device or resource busy

Цей диск наразі використовується - зміна розділів, можливо, погана ідея.
Демонтуйте всі файлові системи, та відключіть всі розділи підкачки на цьому диску.
Використовуйте параметр --no-reread щоб обминути цю перевірку.
Використовуйте параметр --force, щоб відхилити всі перевірки.
[root@cyrax ~]# sfdisk -d /dev/sdi | sfdisk /dev/sdc
Перевіряється, що ніхто наразі не використовує диск ...
Гаразд

Диск /dev/sdc: 29185 циліндрів, 255 головок, 63 секторів/доріжку
Старий стан:
Одиниці виміру = циліндри по 8225280 байт, блоки по 1024 байт, рахуючи від 0

Пристрій Завант Початок Кінець Циліндрів Блоків Ід Система
/dev/sdc1 0 - 0 0 0 Порожн
/dev/sdc2 0 - 0 0 0 Порожн
/dev/sdc3 0 - 0 0 0 Порожн
/dev/sdc4 0 - 0 0 0 Порожн
Новий стан:
Одиниці виміру = сектори по 512 байт, рахуючи від 0

Пристрій Завант Початок Кінець Секторів Ід Система
/dev/sdc1 2048 468860927 468858880 fd Linux raid autodetect
/dev/sdc2 0 - 0 0 Порожн
/dev/sdc3 0 - 0 0 Порожн
/dev/sdc4 0 - 0 0 Порожн
Попередження: розділ 1 не закінчується на межі циліндра

sfdisk: Ці розділи виглядають неправильно - нічого не змінено.
(Якщо ви дійсно цього бажаєте, використовуйте параметр --force.)
[root@cyrax ~]# sfdisk -d /dev/sdi | sfdisk --force /dev/sdc
Перевіряється, що ніхто наразі не використовує диск ...
Гаразд

Диск /dev/sdc: 29185 циліндрів, 255 головок, 63 секторів/доріжку
Старий стан:
Одиниці виміру = циліндри по 8225280 байт, блоки по 1024 байт, рахуючи від 0

Пристрій Завант Початок Кінець Циліндрів Блоків Ід Система
/dev/sdc1 0 - 0 0 0 Порожн
/dev/sdc2 0 - 0 0 0 Порожн
/dev/sdc3 0 - 0 0 0 Порожн
/dev/sdc4 0 - 0 0 0 Порожн
Новий стан:
Одиниці виміру = сектори по 512 байт, рахуючи від 0

Пристрій Завант Початок Кінець Секторів Ід Система
/dev/sdc1 2048 468860927 468858880 fd Linux raid autodetect
/dev/sdc2 0 - 0 0 Порожн
/dev/sdc3 0 - 0 0 Порожн
/dev/sdc4 0 - 0 0 Порожн
Попередження: розділ 1 не закінчується на межі циліндра
Успішно записано нову таблицю розділів

Перечитується таблиця розділів ...

Якщо ви створили або змінили DOS розділ, скажімо /dev/foo7, тоді використовуйте dd(1)
для заповнення нулями перших 512 байт: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(Дивіться fdisk(8).)
[root@cyrax ~]# sfdisk -d /dev/sdc
# partition table of /dev/sdc
unit: sectors

/dev/sdc1 : start= 2048, size=468858880, Id=fd
/dev/sdc2 : start= 0, size= 0, Id= 0
/dev/sdc3 : start= 0, size= 0, Id= 0
/dev/sdc4 : start= 0, size= 0, Id= 0
[root@cyrax ~]#


[root@cyrax ~]# grub
Probing devices to guess BIOS drives. This may take a long time.
Unknown partition table signature


GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> find /boot/grub/stage1
find /boot/grub/stage1
(hd2,0)
(hd8,0)
grub> root (hd2,0)
root (hd2,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd2)
setup (hd2)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd2)"... 27 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd2) (hd2)1+27 p (hd2,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> root (hd8,0)
root (hd8,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd8)
setup (hd8)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd8)"... 27 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd8) (hd8)1+27 p (hd8,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> ^C
[root@cyrax ~]#

Hits: 507
0

https://www.howtoforge.com/how-to-resize-raid-partitions-shrink-and-grow-software-raid

 

How To Resize RAID Partitions (Shrink & Grow) (Software RAID)

Version 1.0 
Author: Falko Timme 


This article describes how you can shrink and grow existing software RAID partitions. I have tested this with non-LVM RAID1 partitions that use ext3 as the file system. I will describe this procedure for an intact RAID array and also a degraded RAID array.

If you use LVM on your RAID partitions, the procedure will be different, so do not use this tutorial in this case!

I do not issue any guarantee that this will work for you!

 

1 Preliminary Note

A few days ago I found out that one of my servers had a degraded RAID1 array (/dev/md2, made up of /dev/sda3 and /dev/sdb3/dev/sda3 had failed, /dev/sdb3 was still active):

server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
      4594496 blocks [2/1] [_U]

md1 : active raid1 sda2[0] sdb2[1]
      497920 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      144448 blocks [2/2] [UU]

unused devices: <none>
server1:~#

I tried to fix it (using this tutorial), but unfortunately at the end of the sync process (with 99.9% complete), the sync stopped and started over again. As I found out, this happened because there were some defect sectors at the end of the (working) partition /dev/sdb3 - this was in /var/log/kern.log:

Nov 22 18:51:06 server1 kernel: sdb: Current: sense key: Aborted Command
Nov 22 18:51:06 server1 kernel: end_request: I/O error, dev sdb, sector 1465142856

So this was the worst case that could happen - /dev/sda dead and /dev/sdb about to die. To fix this, I imagined I could shrink /dev/md2 so that it leaves out the broken sectors at the end of /dev/sdb3, then add the new /dev/sda3 (from the replaced hard drive) to /dev/md2, let the sync finish, remove /dev/sdb3 from the array and replace /dev/sdb with a new hard drive, add the new /dev/sdb3 to /dev/md2, and grow /dev/md2 again.

This is one of the use cases for the following procedures (I will describe the process for an intact array and a degraded array).

Please note that /dev/md2 is my system partition (mount point /), so I had to use a rescue system (e.g. Knoppix Live-CD) to resize the array. If the array you want to resize is not your system partition, you probably don't need to boot into a rescue system; but in either case, make sure that the array is unmounted!

 

2 Intact Array

I will describe how to resize the array /dev/md2, made up of /dev/sda3 and /dev/sdb3.

 

2.1 Shrinking An Intact Array

Boot into your rescue system and activate all needed modules:

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Then activate your RAID arrays:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

mdadm -A --scan

Run

e2fsck -f /dev/md2

to check the file system.

/dev/md2 has a size of 40GB; I want to shrink it to 30GB. First we have to shrink the file system with resize2fs; to make sure that the file system fits into the 30GB, we make it a little bit smaller (25GB) so we have a little security margin, shrink /dev/md2 to 30GB, and the resize the file system (again with resize2fs) to the max. possible value:

resize2fs /dev/md2 25G

Now we shrink /dev/md2 to 30GB. The --size value must be in KiBytes (30 x 1024 x 1024 = 31457280); make sure it can be divided by 64:

mdadm --grow /dev/md2 --size=31457280

Next we grow the file system to the largest possible value (if you don't specify a size, resize2fs will use the largest possible value)...

resize2fs /dev/md2

... and run a file system check again:

e2fsck -f /dev/md2

That's it - you can now boot into the normal system again.

 

2.2 Growing An Intact Array

Boot into your rescue system and activate all needed modules:

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Then activate your RAID arrays:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

mdadm -A --scan

Now we can grow /dev/md2 as follows:

mdadm --grow /dev/md2 --size=max

--size=max means the largest possible value. You can as well specify a size in KiBytes (see previous chapter).

Then we run a file system check...

e2fsck -f /dev/md2

..., resize the file system...

resize2fs /dev/md2

... and check the file system again:

e2fsck -f /dev/md2

Afterwards you can boot back into your normal system.

 

How To Resize RAID Partitions (Shrink & Grow) (Software RAID) - Page 2

3 Degraded Array

I will describe how to resize the degraded array /dev/md2, made up of /dev/sda3 and /dev/sdb3, where /dev/sda3 has failed:

server1:~# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdb3[1]
      4594496 blocks [2/1] [_U]

md1 : active raid1 sda2[0] sdb2[1]
      497920 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      144448 blocks [2/2] [UU]

unused devices: <none>
server1:~#


 

3.1 Shrinking A Degraded Array

Before we boot into the rescue system, we must make sure that /dev/sda3 is really removed from the array:

mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3

Then we overwrite the superblock on /dev/sda3 (this is very important - if you forget this, the system might now boot anymore after the resizal!):

mdadm --zero-superblock /dev/sda3

Boot into your rescue system and activate all needed modules:

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Then activate your RAID arrays:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

mdadm -A --scan

Run

e2fsck -f /dev/md2

to check the file system.

/dev/md2 has a size of 40GB; I want to shrink it to 30GB. First we have to shrink the file system with resize2fs; to make sure that the file system fits into the 30GB, we make it a little bit smaller (25GB) so we have a little security margin, shrink /dev/md2 to 30GB, and the resize the file system (again with resize2fs) to the max. possible value:

resize2fs /dev/md2 25G

Now we shrink /dev/md2 to 30GB. The --size value must be in KiBytes (30 x 1024 x 1024 = 31457280); make sure it can be divided by 64:

mdadm --grow /dev/md2 --size=31457280

Next we grow the file system to the largest possible value (if you don't specify a size, resize2fs will use the largest possible value)...

resize2fs /dev/md2

... and run a file system check again:

e2fsck -f /dev/md2

Then boot into the normal system again and run the following two commands to add /dev/sda3 back to the array /dev/md2:

mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3

Take a look at

cat /proc/mdstat

and you should see that /dev/sdb3 and /dev/sda3 are now being synced.

 

3.2 Growing A Degraded Array

Before we boot into the rescue system, we must make sure that /dev/sda3 is really removed from the array:

mdadm --manage /dev/md2 --fail /dev/sda3
mdadm --manage /dev/md2 --remove /dev/sda3

Then we overwrite the superblock on /dev/sda3 (this is very important - if you forget this, the system might now boot anymore after the resizal!):

mdadm --zero-superblock /dev/sda3

Boot into your rescue system and activate all needed modules:

modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10

Then activate your RAID arrays:

cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

mdadm -A --scan

Now we can grow /dev/md2 as follows:

mdadm --grow /dev/md2 --size=max

--size=max means the largest possible value. You can as well specify a size in KiBytes (see previous chapter).

Then we run a file system check...

e2fsck -f /dev/md2

..., resize the file system...

resize2fs /dev/md2

... and check the file system again:

e2fsck -f /dev/md2

Then boot into the normal system again and run the following two commands to add /dev/sda3 back to the array /dev/md2:

mdadm --zero-superblock /dev/sda3
mdadm -a /dev/md2 /dev/sda3

Take a look at

cat /proc/mdstat

and you should see that /dev/sdb3 and /dev/sda3 are now being synced.

Hits: 518
0

Posted by on in Soft

маємо таку штуку:

http://www.icstation.com/icstation-channel-micro-relay-module-icse014a-p-5185.html

b2ap3_thumbnail_5185_3_2854.JPG

Features

1. It's designed with MICRO USB and serial port for communicating with outside. It's more convenient to connect module with PC and other device.
2. The normal working voltage of this module is 5V and it has the 5V power port.



Parameters

 

ICSE012A

ICSE013A

ICSE014A

Unit

Remark

CC

4

2

8

 

channel count of module

I

400

250

700

mA

working current

U

5

5

5

V

input voltage

 







 

whether have serial port

 

9600

9600

9600

bit/s

baud rate of serial port

F

1000

1000

1000

Hz

module control frequency

 

x

x



 

whether have power interface

Interface

Modules are with Micro USB, serial port and TTL serial interface. 
 

  • Micro USB:Standard micro USB female adapter.( can use the USB extension cord to connect with the PC and the other devices)
  • TX: Transmit
  • RX : Receive
  • 5V:Volt current condenser
  • GND : Ground
  • 5V power socket: Only the ICSE014A module has this interface.( it works when the MICRO USB can not supply enough power)
 

How to use it?

1).USB Usage method

    These modules use the USB port to connect with the PC as following:
img

Open the "Relay Board Manager" to control the module directly. Please refer the usage of this software to "Relay Board Manager_Reference".

2)Serial port using method

These modules can use the serial port to connect with other communication devices. These modules can receive the Single-byte instruction from the upper monitor.
Upper Monitor          0x50        0x51
ICSE012A          0xAB
ICSE013A          0xAD
ICSE014A          0xAC


These modules will work normally after they receive the "0X51" instruction. The bytes which these modules receive can control the modules directly and every singly byte control one channel of the module( "0" means start, "1"means stop).

The details are as following:


Bit
ICSE012A

ICSE013A

ICSE014A

Remark

0







Control the relay K1

1







Control the relay K2

2







Control the relay K3

3







Control the relay K4

4







Control the relay K5

5







Control the relay K6

6







Control the relay K7

7







Control the relay K8

 

Download PC.zip

=====================================

наша мета навчитися керувати цією штукою з лінукса

оскільки драйвери на Pl2302 вже є у самому ядрі тому їх інсталювати не потрібно .. 

коли ми вставляємо юзб реле в комп, нам в журналі видно таке 

Sep 29 12:04:29 localhost kernel: usb 4-2: new full speed USB device number 5 using uhci_hcd
Sep 29 12:04:30 localhost kernel: usb 4-2: New USB device found, idVendor=067b, idProduct=2303
Sep 29 12:04:30 localhost kernel: usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 29 12:04:30 localhost kernel: usb 4-2: Product: USB-Serial Controller
Sep 29 12:04:30 localhost kernel: usb 4-2: Manufacturer: Prolific Technology Inc.
Sep 29 12:04:30 localhost kernel: usb 4-2: configuration #1 chosen from 1 choice
Sep 29 12:04:30 localhost kernel: pl2303 4-2:1.0: pl2303 converter detected
Sep 29 12:04:30 localhost kernel: usb 4-2: pl2303 converter now attached to ttyUSB0

вчимося включати і виключати його програмним методом фізично не витягуючи ЮЗБ дроту.

- нам потрібно знати до якого пристрою ми звиртаємося тому шукаємо його назву:

це можна подивитися або тут /sys/bus/usb/drivers/pl2303

але ми подивимося іншим методом

dmesg | grep ': pl2303 converter detected' |sed -e '$!d'| awk '{ print $2}'|sed 's/.$//'

(стираючи ззаду до переду оператори розділені | можна побачити що вони означають методом научного тику щоб довго не розписувати)

відєднуємо пристрій
echo -n "4-2:1.0" > /sys/bus/usb/drivers/pl2303/unbind
переконуємося що пристрій відєднаний
ls -lrt /dev/ttyUSB*
підєднуємо пристрій
echo -n "4-2:1.0" > /sys/bus/usb/drivers/pl2303/bind
(в даному випадку живлення на самі релюшки далі йде і вони залишаються у включеному стані якщо такий був вибраний)
налаштовуємо порт:
stty -F /dev/ttyUSB0 9600 -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke

вітаємося 

echo -e -n "\x50" > /dev/ttyUSB0
активуємо контролер щоб він почав сприймати команди
echo -e -n "\x51" > /dev/ttyUSB0
вимкнути всі реле (тобто стан по замовчуванню)
echo -e -n "\xff" > /dev/ttyUSB0
увімкнути всі реле
echo -e -n "\x00" > /dev/ttyUSB0

значить з цього моменту далі получаєтсья так що не моджна звернутися до якогось конкретного реле. наступні звернення йдуть одночасно до всіх реле і якщо хочеш клацати лише перше реле і щоб інші не змінили свого стану тоді треба шось думати .. всі комбінації можливих станів це:

(щоб скласти таку табличку використали excel )

DEC2HEX(D2;2) DEC2BIN(D2;8)
0 00 00000000
1 01 00000001
2 02 00000010
3 03 00000011
4 04 00000100
5 05 00000101
6 06 00000110
7 07 00000111
8 08 00001000
9 09 00001001
10 0A 00001010
11 0B 00001011
12 0C 00001100
13 0D 00001101
14 0E 00001110
15 0F 00001111
16 10 00010000
17 11 00010001
18 12 00010010
19 13 00010011
20 14 00010100
21 15 00010101
22 16 00010110
23 17 00010111
24 18 00011000
25 19 00011001
26 1A 00011010
27 1B 00011011
28 1C 00011100
29 1D 00011101
30 1E 00011110
31 1F 00011111
32 20 00100000
33 21 00100001
34 22 00100010
35 23 00100011
36 24 00100100
37 25 00100101
38 26 00100110
39 27 00100111
40 28 00101000
41 29 00101001
42 2A 00101010
43 2B 00101011
44 2C 00101100
45 2D 00101101
46 2E 00101110
47 2F 00101111
48 30 00110000
49 31 00110001
50 32 00110010
51 33 00110011
52 34 00110100
53 35 00110101
54 36 00110110
55 37 00110111
56 38 00111000
57 39 00111001
58 3A 00111010
59 3B 00111011
60 3C 00111100
61 3D 00111101
62 3E 00111110
63 3F 00111111
64 40 01000000
65 41 01000001
66 42 01000010
67 43 01000011
68 44 01000100
69 45 01000101
70 46 01000110
71 47 01000111
72 48 01001000
73 49 01001001
74 4A 01001010
75 4B 01001011
76 4C 01001100
77 4D 01001101
78 4E 01001110
79 4F 01001111
80 50 01010000
81 51 01010001
82 52 01010010
83 53 01010011
84 54 01010100
85 55 01010101
86 56 01010110
87 57 01010111
88 58 01011000
89 59 01011001
90 5A 01011010
91 5B 01011011
92 5C 01011100
93 5D 01011101
94 5E 01011110
95 5F 01011111
96 60 01100000
97 61 01100001
98 62 01100010
99 63 01100011
100 64 01100100
101 65 01100101
102 66 01100110
103 67 01100111
104 68 01101000
105 69 01101001
106 6A 01101010
107 6B 01101011
108 6C 01101100
109 6D 01101101
110 6E 01101110
111 6F 01101111
112 70 01110000
113 71 01110001
114 72 01110010
115 73 01110011
116 74 01110100
117 75 01110101
118 76 01110110
119 77 01110111
120 78 01111000
121 79 01111001
122 7A 01111010
123 7B 01111011
124 7C 01111100
125 7D 01111101
126 7E 01111110
127 7F 01111111
128 80 10000000
129 81 10000001
130 82 10000010
131 83 10000011
132 84 10000100
133 85 10000101
134 86 10000110
135 87 10000111
136 88 10001000
137 89 10001001
138 8A 10001010
139 8B 10001011
140 8C 10001100
141 8D 10001101
142 8E 10001110
143 8F 10001111
144 90 10010000
145 91 10010001
146 92 10010010
147 93 10010011
148 94 10010100
149 95 10010101
150 96 10010110
151 97 10010111
152 98 10011000
153 99 10011001
154 9A 10011010
155 9B 10011011
156 9C 10011100
157 9D 10011101
158 9E 10011110
159 9F 10011111
160 A0 10100000
161 A1 10100001
162 A2 10100010
163 A3 10100011
164 A4 10100100
165 A5 10100101
166 A6 10100110
167 A7 10100111
168 A8 10101000
169 A9 10101001
170 AA 10101010
171 AB 10101011
172 AC 10101100
173 AD 10101101
174 AE 10101110
175 AF 10101111
176 B0 10110000
177 B1 10110001
178 B2 10110010
179 B3 10110011
180 B4 10110100
181 B5 10110101
182 B6 10110110
183 B7 10110111
184 B8 10111000
185 B9 10111001
186 BA 10111010
187 BB 10111011
188 BC 10111100
189 BD 10111101
190 BE 10111110
191 BF 10111111
192 C0 11000000
193 C1 11000001
194 C2 11000010
195 C3 11000011
196 C4 11000100
197 C5 11000101
198 C6 11000110
199 C7 11000111
200 C8 11001000
201 C9 11001001
202 CA 11001010
203 CB 11001011
204 CC 11001100
205 CD 11001101
206 CE 11001110
207 CF 11001111
208 D0 11010000
209 D1 11010001
210 D2 11010010
211 D3 11010011
212 D4 11010100
213 D5 11010101
214 D6 11010110
215 D7 11010111
216 D8 11011000
217 D9 11011001
218 DA 11011010
219 DB 11011011
220 DC 11011100
221 DD 11011101
222 DE 11011110
223 DF 11011111
224 E0 11100000
225 E1 11100001
226 E2 11100010
227 E3 11100011
228 E4 11100100
229 E5 11100101
230 E6 11100110
231 E7 11100111
232 E8 11101000
233 E9 11101001
234 EA 11101010
235 EB 11101011
236 EC 11101100
237 ED 11101101
238 EE 11101110
239 EF 11101111
240 F0 11110000
241 F1 11110001
242 F2 11110010
243 F3 11110011
244 F4 11110100
245 F5 11110101
246 F6 11110110
247 F7 11110111
248 F8 11111000
249 F9 11111001
250 FA 11111010
251 FB 11111011
252 FC 11111100
253 FD 11111101
254 FE 11111110
255 FF 11111111

 

 пробуємо знайти залежність між табличкою і восьмома реле

якщо взяти платку перед собою юзб виходом у верх тоді почерговість реле получиться така:
8-usb-4
7-------3
6-------2
5-------1

поставимо їх в рядок получиться 

12345678

приймаємо що 1 це замкнуто нормально замкнуті контакти а 0 це замкнуто нормально розмікнуті контакти (тобто на реле подана напруга)

значить починаємо зі стану коли всі реле без напруги топто 

11111111

і я хочу подати напругу лише на перше реле тобто 

01111111 що в шіснадцятковій системі дорівнює 7F

відсилаємо команду 

 echo -e -n "\x7F" > /dev/ttyUSB0

 

 щоб перевірити чи дана взаємозалежність працює пробуємо вибірково включити напругу для прикладу 1 і 2 і 4 і 8 реле 

це в нас полчиться так 

12345678

 00101110 -> 2e

 echo -e -n "\x2e" > /dev/ttyUSB0

 ============

 

 

 тепер створюємо правило щоб реле проходило автоматично ініціалізацію коли його вставляють в компютер
lsusb
Bus 004 Device 007: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

створюємо файл
/etc/udev/rules.d/95-my_usb_relay_rule.rules

ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="067b", SYSFS{idProduct}=="2303", RUN+="/home/myhome/my_script"



#!/bin/bash
#sleep 1
devname=$(dmesg | grep 'pl2303 converter now attached to' |sed -e '$!d'| awk '{ print $8}')
echo "$devname" > "/var/reley_name"
stty -F /dev/$devname 9600 -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
#sleep 1
echo -e -n "\x50" > /dev/$devname
#sleep 1
echo -e -n "\x51" > /dev/$devname
#echo "01111111" > "/var/reley_status"
#get saved relay status https://unix.stackexchange.com/a/65283/157086
relstatusbin=$(</var/reley_status)
relstatus16=$(echo "ibase=2;obase=10000;$relstatusbin"|bc)
echo -e -n "\x$relstatus16" > /dev/$devname

 

 

 

 

 

 

 

 
https://stackoverflow.com/questions/4189383/bash-script-to-detect-when-my-usb-is-plugged-in-and-to-then-sync-it-with-a-direc
https://stackoverflow.com/questions/26913755/need-help-understading-sending-bytes-to-serial-port/26925382#26925382

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hits: 826
0

Posted by on in Uncategorized

 

http://lucene.apache.org/solr/

https://stats.stackexchange.com/questions/151349/what-is-the-best-algorithm-to-find-similar-text-documents?newreg=5f1832ee504a465d8da7a7d00a1e0f1e

https://stackoverflow.com/questions/15704644/difference-between-solr-and-lucene

 

мета: найти схожі файли між 30 000 000...40 000 000 файлами (близько 500 гігабайт)

1) є надія що це зможе зробити solr 

2) створюємо веб сервер через який є доступ до тих файлів 

3) налаштовуємо якийсь павучок Nutch - http://lucene.apache.org/nutch/

https://stackoverflow.com/questions/1781247/does-solr-do-web-crawling

надіємося що то все якось збереться в купу

===================================

We found version 1.6.0_38, using command 'java -version', with response:
java version "1.6.0_38"

Please install latest version of Java 1.8 or set JAVA_HOME properly. 

 

http://www.itzgeek.com/how-tos/linux/centos-how-tos/how-to-install-java-sdk-1-8-on-rhel-6-centos-6.html

 

yum list *jdk*

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64

java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

 

bin/solr create -c mycolection

runuser -l solr -c '/solr/bin/solr create -c colect2'

Скануємо папку 

/solr/solr/bin/post -c mycolection /folder2/2017/08/13

 

 

Hits: 871
0

Posted by on in Uncategorized

npm update socket.io

https://socket.io/

 

 

  1. Download npm, the NodeJS Package Manager
  2. Install npm
  3. Open the terminal and execute the following command to install socket.io

    npm install socket.io
  4. When you want to update it, execute the following command on the terminal

    npm update socket.io
Alternatively you can execute

npm update -g in order to update globally installed packages.

 

https://stackoverflow.com/questions/30419397/how-do-i-check-the-version-of-socket-io-and-update-it

Hits: 794
0

Posted by on in Uncategorized

при будь якій роботі з дисками з яких грузиться лінукс треба обовязково перевіряти налаштування grub

ситуація така, 

в робочій системі яка складалася з raid 1  (mdadm)

на ходу було замінено по черзі два диска (тобто всі диски)

після перезавантаження вискочило чорний екран і лише 

error 17 

і більше нічого

суть ремонту: 

завантажуємо сервер з загрузочної флешки 

в мому випадку Parted_Magic_2015.03.06 http://rutracker.org/forum/viewtopic.php?t=4977149

флешка загрузилася тепер заходимо на наш системний розділ (щоб він змонтувася)

далі:

 

Welcome - Parted Magic (Linux 3.18.7-pmagic64)

root@partedmagic:~# grub
-bash: grub: command not found
root@partedmagic:~# sudo /media/md126/sbin/grub
Probing devices to guess BIOS drives. This may take a long time.


GNU GRUB version 0.97 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> find /boot/grub/stage1
find /boot/grub/stage1
(hd0,1)
(hd1,1)
grub> root (hd1,1)
root (hd1,1)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd1)"... 27 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd1) (hd1)1+27 p (hd1,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> root (hd0,1)
root (hd0,1)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+27 p (hd0,1)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub> ^C
root@partedmagic:~#

 

ми встановили груб на два диска. 

це вже пів роботи зроблено!! але!!!!!

перевяряємо чи ті самі диски стоять у файлах: 

/boot/grub/device.map

/boot/grub/device.map/grub.conf

default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-642.el6.x86_64)
root (hd0,1)
kernel /boot/vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=d6420************************a757 LANG=uk_UA.UTF-8 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us SYSFONT=latarcyrheb-sun16 crashkernel=128M quiet
initrd /boot/initramfs-2.6.32-642.el6.x86_64.img

 

на всяк випадок /etc/fstab також перевірити 

 

Hits: 584
0
[root var]# mdadm --detail /dev/md126
/dev/md126:
Version : 1.0
Creation Time : Mon Dec 14 12:11:26 2015
Raid Level : raid1
Array Size : 125033344 (119.24 GiB 128.03 GB)
Used Dev Size : 125033344 (119.24 GiB 128.03 GB)
Raid Devices : 3
Total Devices : 2
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Fri Jun 16 21:50:39 2017
State : active, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Name : localhost.localdomain:ssdraid
UUID : f3c9263f:6ae4f489:1fc15cc0:e38807fc
Events : 794672

Number Major Minor RaidDevice State
2 8 2 0 active sync /dev/sda2
3 8 18 1 active sync /dev/sdb2
4 0 0 4 removed
[roo var]# mdadm -G /dev/md126 --raid-devices=2
raid_disks for /dev/md126 set to 2
[ro28 var]# mdadm --detail /dev/md126
/dev/md126:
Version : 1.0
Creation Time : Mon Dec 14 12:11:26 2015
Raid Level : raid1
Array Size : 125033344 (119.24 GiB 128.03 GB)
Used Dev Size : 125033344 (119.24 GiB 128.03 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Fri Jun 16 21:53:38 2017
State : active
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Name : localhost.localdomain:ssdraid
UUID : f3c9263f:6ae4f489:1fc15cc0:e38807fc
Events : 795199

Number Major Minor RaidDevice State
2 8 2 0 active sync /dev/sda2
3 8 18 1 active sync /dev/sdb2
Tagged in: mdadm raid
Hits: 614
0

Posted by on in Uncategorized

прошивку качати тут :https://www.broadcom.com/support/download-search/?pg=&pf=&pn=SAS+9211-8i+Host+Bus+Adapter&po=&pa=&dk=#tab-current-Firmware

IR - Integrated RAID

IT- Initiator-Target, (Host Bus Adapter HBA)

не робити! створюємо завантажувальну влешку з досом 

не робити! шукаємо в гуглі: bootable usb dos

бо вибило “Failed to initialize PAL.

 

тому читаємо це і це

http://brycv.com/blog/2012/flashing-it-firmware-to-lsi-sas9211-8i/

https://serverfault.com/questions/679175/failed-to-initialize-pal-while-upgrading-an-lsi-9211-8i-to-it

в результаті в біосі є пункт який відкриває "efi"

для материнок які немають ефі мабуть треба пробувати досом

 

в результаті процедура прошивки і начкбто не складна але зібрати все в купу трохи заберає часу.  

 

http://true-system.blogspot.com/2011/07/lsi-9211-48i-it.html

 

 

mount fs1

fs1:

 

sas2flash.efi -o -e 7 (sas2flash.efi -o -e 6 якщо не стерати серійник .. серійник знаходиться на наклейці на платі)

sas2flash.efi -o -f 2118it.bin -b mptsas2.rom  -sasadd 500605P358814209

================

 196_SAS2Flash_ReferenceGuide.pdf

https://www.broadcom.com/support/knowledgebase/1211161495925/flash-upgrading-firmware-on-lsi-sas-hbas-upgraded-firmware-on-92

 

також можна пршивати з віндовсе через CMD

https://www.broadcom.com/support/download-search/?pg=&pf=&pn=SAS+9211-8i+Host+Bus+Adapter&po=&pa=&dk=#tab-archive-Firmware

качаємо в розділі фірмваре -> інсталер

запускаємо командний рядок 

переходимо на потрібний диск 

D:

запускаємо команду яку треба 

sas2flash.exe -o -list

 

Tagged in: lsi raid sas
Hits: 694
0

Posted by on in Uncategorized

аємо клон IMAX B6 на контролері  ATMEGA32A куплений за 15$ з копійками

потім докуплено на аліекспресі USBISP USBASP  AVR Programmer 1,2$

основні ссилки:

https://youtu.be/hfklF_EA1tk

https://github.com/stawel/cheali-charger

https://github.com/stawel/cheali-charger/blob/master/docs/flashing.md

http://www.fischl.de/usbasp/

Hits: 839
5 1

/вираз/ між ці дві риски поміщаємо вираз

/вираз/ i символ і означає прапорець

 

  • . = any char
  • \. = the actual dot character
  • .? = .{0,1} = match any char zero or one times
  • .* = .{0,} = match any char zero or more times
  • .+ = .{1,} = match any char one or more times
| OR operator when multiple patterns are specified
abc Check if string contains a substring abc
^abc Check if string starts with abc

 

([0-9]+) будьякі цифри

 

PatternWhat the pattern matches
^ Beginning of string
$ End of string
. Any single character
[...] Any character listed between the square brackets
[^...] Any character not listed between the square brackets
p1|p2|p3 Alternation; matches any of the patterns p1, p2, or p3
* Zero or more instances of preceding element
+ One or more instances of preceding element
{n} n instances of preceding element
{m,n} m through n instances of preceding element
Character classes
. any character except newline
\w \d \s word, digit, whitespace
\W \D \S not word, digit, whitespace
[abc] any of a, b, or c
[^abc] not a, b, or c
[a-g] character between a & g
Anchors
^abc$ start / end of the string
\b word boundary
Escaped characters
\. \* \\ escaped special characters
\t \n \r tab, linefeed, carriage return
\u00A9 unicode escaped ©
Groups & Lookaround
(abc) capture group
\1 backreference to group #1
(?:abc) non-capturing group
(?=abc) positive lookahead
(?!abc) negative lookahead
Quantifiers & Alternation
a* a+ a? 0 or more, 1 or more, 0 or 1
a{5} a{2,} exactly five, two or more
a{1,3} between one & three
a+? a{2,}? match as few as possible
ab|cd

match ab or cd

 


 

http://www.rubular.com/r/hXVZXQu45h

 

http://www.regexpal.com/

 

В регулярном выражении могут использоваться любые специальные символы/структуры из числа приведенных ниже:

^
Соответствие началу строки.mysql> SELECT "fo\nfo" REGEXP "^fo$"; -> 0 mysql> SELECT "fofo" REGEXP "^fo"; -> 1
$
Соответствие концу строки.mysql> SELECT "fo\no" REGEXP "^fo\no$"; -> 1 mysql> SELECT "fo\no" REGEXP "^fo$"; -> 0
.
Соответствие любому символу (включая перевод строки).mysql> SELECT "fofo" REGEXP "^f.*"; -> 1 mysql> SELECT "fo\nfo" REGEXP "^f.*"; -> 1
a*
Соответствие любой последовательности из нуля или более символов "a".mysql> SELECT "Ban" REGEXP "^Ba*n"; -> 1 mysql> SELECT "Baaan" REGEXP "^Ba*n"; -> 1 mysql> SELECT "Bn" REGEXP "^Ba*n"; -> 1
a+
Соответствие любой последовательности из одного или более символов "a ".mysql> SELECT "Ban" REGEXP "^Ba+n"; -> 1 mysql> SELECT "Bn" REGEXP "^Ba+n"; -> 0
a?
Соответствие как нулю, так и одному символу "a".mysql> SELECT "Bn" REGEXP "^Ba?n"; -> 1 mysql> SELECT "Ban" REGEXP "^Ba?n"; -> 1 mysql> SELECT "Baan" REGEXP "^Ba?n"; -> 0
de|abc
Соответствие как последовательности de, так и последовательности abc.mysql> SELECT "pi" REGEXP "pi|apa"; -> 1 mysql> SELECT "axe" REGEXP "pi|apa"; -> 0 mysql> SELECT "apa" REGEXP "pi|apa"; -> 1 mysql> SELECT "apa" REGEXP "^(pi|apa)$"; -> 1 mysql> SELECT "pi" REGEXP "^(pi|apa)$"; -> 1 mysql> SELECT "pix" REGEXP "^(pi|apa)$"; -> 0
(abc)*
Соответствие нулю или более вхождениям последовательности abc.mysql> SELECT "pi" REGEXP "^(pi)*$"; -> 1 mysql> SELECT "pip" REGEXP "^(pi)*$"; -> 0 mysql> SELECT "pipi" REGEXP "^(pi)*$"; -> 1
{1}
{2,3}
Существует более общий способ написания регулярных выражений, позволяющий установить соответствия для нескольких вхождений предшествующего элемента.
a*
Можно записать как a{0,}.
a+
Можно записать как a{1,}.
a?
Можно записать как a{0,1}.
Точнее говоря, элемент, за которым следует ограничение, содержащее одно целое число i без запятой, соответствует последовательности, в точности состоящей из i вхождений данного элемента. Если за элементом следует ограничение, содержащее одно число i и запятую, то устанавливается соответствие для последовательности, содержащей i или более вхождений данного элемента. Если за элементом следует ограничение, содержащее два целых числа i и j, то устанавливается соответствие для последовательности от i до j (включительно) вхождений данного элемента. Оба аргумента должны находится в диапазоне от 0 до RE_DUP_MAX (по умолчанию 255) включительно. Если существуют оба аргумента, то второй должен быть больше первого или равен ему.
[a-dX]
[^a-dX]
Устанавливает соответствие для любого символа, являющегося (или не являющегося, если используется ^) символом abcd или X. Для литерального включения символа ] следует сразу же после него написать открывающую скобку [. Для литерального включения символа - он должен быть написан первым или последним. Таким образом, выражение [0-9] устанавливает соответствие для любой десятичной цифры. Любой символ, для которого не задано определенное значение внутри пары скобок [], не имеет специального значения и совпадает только с самим собой.mysql> SELECT "aXbc" REGEXP "[a-dXYZ]"; -> 1 mysql> SELECT "aXbc" REGEXP "^[a-dXYZ]$"; -> 0 mysql> SELECT "aXbc" REGEXP "^[a-dXYZ]+$"; -> 1 mysql> SELECT "aXbc" REGEXP "^[^a-dXYZ]+$"; -> 0 mysql> SELECT "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1 mysql> SELECT "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0
[[.characters.]]
Последовательность символов данного элемента сравнения. Эта последовательность представляет собой единственный элемент из списка в выражении в скобках. Выражение в скобках, содержащее многосимвольный сравнивающий элемент, может, следовательно, искать соответствие более, чем одного, например, если последовательность сравнения включает в себя элемент сравнения ch, то регулярное выражение [[.ch.]]*cустанавливает  соответствие с первыми пятью символами выражения chchcc.
[=character_class=]
Класс эквивалентности, означающий, что последовательности символов всех элементов сравнения, включенных в данный класс, эквивалентны между собой. Например, если o и (+) являются членами класса эквивалентности, то последовательности [[=o=]][[=(+)=]] и [o(+)] все являются синонимичными. Класс эквивалентности может не быть конечной точкой диапазона.
[:character_class:]
Имя класса символов, заключенное внутри выражения в скобках [: имя :], обозначает список всех символов, принадлежащих данному классу. Имена стандартных классов символов следующие:
Имя Имя Имя
alnum digit punct
alpha graph space
blank lower upper
cntrl print xdigit
Они обозначают классы символов, определенные на странице ctype(3). Локаль может предоставлять другие классы. Класс символов не может использоваться как конечная точка диапазона.mysql> SELECT "justalnums" REGEXP "[[:alnum:]]+"; -> 1 mysql> SELECT "!!" REGEXP "[[:alnum:]]+"; -> 0
[[:<:]]
[[:>:]]
Эти выражения устанавливают соответствие с нулевой строкой в начале и в конце слова соответственно. Слово определяется как последовательность символов слова, которой не предшествуют и за которой не следуют символы слова. Под символом слова понимается любая буква или цифра (как определено в ctype(3)) или подчеркивание (_).mysql> SELECT "a word a" REGEXP "[[:<:]]word[[:>:]]"; -> 1 mysql> SELECT "a xword a" REGEXP "[[:<:]]word[[:>:]]"; -> 0

mysql> SELECT "weeknights" REGEXP "^(wee|week)(knights|nights)$"; -> 1

 

Hits: 707
0

Posted by on in Uncategorized
# memtester 5000 1
memtester version 4.2.1 (64-bit)
Copyright (C) 2010 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).

pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 5000MB (5242880000 bytes)
got 5000MB (5242880000 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
8-bit Writes : ok
16-bit Writes : ok

Done.
Hits: 689
0

Posted by on in Uncategorized

[ro47 ~]# upsc -l
myups
[ro47 ~]# upsc myups

battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.mfr.date: 20xxxxx4
battery.runtime: 3060
battery.runtime.low: 120
battery.temperature: 31.5
battery.type: PbAc
battery.voltage: 27.4
battery.voltage.nominal: 24.0
device.mfr: American Power Conversion
device.model: Smxxxxx00
device.serial: ASxxxxxxxxx
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.version: 2.6.5
driver.version.data: APC HID 0.95
driver.version.internal: 0.37
input.sensitivity: high
input.transfer.high: 253
input.transfer.low: 208
input.transfer.reason: input voltage out of range
input.voltage: 216.0
output.current: 1.45
output.frequency: 50.0
output.voltage: 216.0
output.voltage.nominal: 220.0
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.firmware: 652.12.I
ups.firmware.aux: 4.2
ups.load: 42.9
ups.mfr: American Power Conversion
ups.mfr.date: 20xxxxxx9
ups.model: Smxxxxxxxxx0
ups.productid: 0002
ups.serial: Axxxxxxxxxx
ups.status: OL
ups.test.result: No test initiated
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.timer.start: -1
ups.vendorid: 051d

 

 

[root47 ~]# upscmd -l myups
Instant commands supported on UPS [myups]:

beeper.disable - Disable the UPS beeper
beeper.enable - Enable the UPS beeper
beeper.mute - Temporarily mute the UPS beeper
beeper.off - Obsolete (use beeper.disable or beeper.mute)
beeper.on - Obsolete (use beeper.enable)
load.off - Turn off the load immediately
load.off.delay - Turn off the load with a delay (seconds)
load.on - Turn on the load immediately
load.on.delay - Turn on the load with a delay (seconds)
shutdown.reboot - Shut down the load briefly while rebooting the UPS
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
shutdown.stop - Stop a shutdown in progress
test.battery.start.deep - Start a deep battery test
test.battery.start.quick - Start a quick battery test
test.battery.stop - Stop the battery test
test.panel.start - Start testing the UPS panel
test.panel.stop - Stop a UPS panel test

 

upscmd -u user -p pas111 myups test.battery.start.quick

 

Tagged in: ups
Hits: 656
0