标签: linux

解决优盘安装linux后必须插上优盘才能启动

本文用于帮助那些grub装在优盘上的童鞋,可以试一下。

由于用U盘安装完linux系统后,拔下U盘,系统起不来,所以在拔U盘前得安装grub。
步骤如下:
1、将grub写到第一个硬盘的MBR上。
在终端下进行操作:
[root@localhost~]#grub
Grub>root (hd0,0)
Grub>setup (hd0)
Grub>quit
说明:root (hd0,0) 第一个“0”表示系统中的第一块硬盘,第二个“0”表示第一个硬盘的
第一个分区,刚才安装系统时装在了硬盘的第一根分区即hd0,0。
2、修改/etc/grub.conf 配置文件。
修改其中的(hd1,0)为(hd0,0)
3、保存grub.conf 配置文件退出并重启系统。

linux系统平均负载定义

1,平均负载是什么?
特定时间间隔内运行队列中的平均进程数,好象还不够明白:就是进程队列的长度,有多少个进程在排队等待运行

2,什么是“进程队列”?
一个进程满足以下条件就会位于进程队列中
1,它没有在等待I/O操作的结果
2,它没有主动进入等待状态(即没有调用wait)
3,它没有被停止

3,如何查看平均负载?
最简单的命令是uptime
例子:
[lhd@localhost ~]$ uptime
00:44:22 up 1:17, 3 users, load average: 8.13, 5.90, 4,94

4,显示的内容是什么意思?
load average: 8.13,5.90,4,94
显示的是过去的1,5,15分钟内进程队列中的平均进程数量

5,如何衡量当前系统是否负载过高?
如果每个cpu(可以按CPU核心的数量计算)上当前活动进程数不大于3,则系统性能良好,
不大于4,表示可以接受
如大于5,则系统性能问题严重
上面例中的8.13,如果有2个cpu核心,则8.13/2=4.065, 此系统性能可以接受
建议设置严格的报警值为: CPU核心的数量
比如:CPU核心数量为2,则设置报警值为2
(这样设置是合理的,因为毕竟不是每个应用都支持多CPU及多核心)

6,查看平均负载的命令
有5个可用:
tload 能够绘制出负载变化的图形
uptime 同时显示开机以来的时间
w 同时显示出已登录的用户
top 这个对资源占用太高,不建议使用
cat /proc/loadavg 通过/proc系统信息得到平均负载
注意:如果你要持续的观察平均负载,建议用 watch uptime 或 watch cat /proc/loadavg
备注:关于watch:每隔一定时间执行指定的程序,并全屏显示结果。时间默认是2秒

iptables防火墙开启关闭指定端口

一般情况下iptables已经包含在Linux发行版中
运行iptables –version来查看系统是否安装iptables

启动iptables
service iptables start
iptables –list //*查看iptables规则集*//
下面是没有定义规划时iptables的样子:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

如何开启/关闭指定端口
例如:
开启81端口:
iptables -I INPUT -i eth0 -p tcp –dport 81 -j ACCEPT
iptables -I OUTPUT -o eth0 -p tcp –sport 81 -j ACCEPT
关闭81端口:
iptables -I INPUT -i eth0 -p tcp –dport 81 -j DROP
iptables -I OUTPUT -o eth0 -p tcp –sport 81 -j DROP
然后保存
/etc/rc.d/init.d/iptables save

eth0为网卡名称,可以输入ifconfig来查看网卡信息,注意填写正确的网卡名称。

可以使用lsof命令来查看某一端口是否开放.查看端口可以这样来使用.
我就以81端口为例:
lsof -i:81
如果有显示说明已经开放了,如果没有显示说明没有开放。

DD测试磁盘性能

常用的vps测试命令
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾则乘以相应的数字:b=512;c=1;k=1024;w=2
参数:
1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8. conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

二、dd应用实例。
1.将本地的/dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/dev/hdd
2.将/dev/hdb全盘数据备份到指定路径的image文件
dd if=/dev/hdb of=/root/image
3.将备份文件恢复到指定盘
dd if=/root/image of=/dev/hdb
4.备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
dd if=/dev/hdb | gzip > /root/image.gz
5.将压缩的备份文件恢复到指定盘
gzip -dc /root/image.gz | dd of=/dev/hdb
6.备份磁盘开始的512个字节大小的MBR信息到指定文件
dd if=/dev/hda of=/root/image count=1 bs=512
count=1指仅拷贝一个块;bs=512指块大小为512个字节。
恢复:dd if=/root/image of=/dev/hda
7.备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)
8.拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)
9.拷贝光盘内容到指定文件夹,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso
10.增加swap分区文件大小
第一步:创建一个大小为256M的文件:
dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件:
mkswap /swapfile
第三步:启用这个swap文件:
swapon /swapfile
第四步:编辑/etc/fstab文件,使在每次开机时自动加载swap文件:
/swapfile swap swap default 0 0
11.销毁磁盘数据
dd if=/dev/urandom of=/dev/hda1
注意:利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
12.测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
13.确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
14.修复硬盘:
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。并且这个过程是安全、高效的。
/dev/null和/dev/zero的区别 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件。 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件。
/dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。 /dev/zero——该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。 oracle@localhost oracle]
eg,
find / -name access_log 2>/dev/null
使用/dev/null 把/dev/null看作”黑洞”. 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
禁止标准输出. 1 cat $filename >/dev/null
2 # 文件内容丢失,而不会输出到标准输出.
禁止标准错误 (来自例子 12-3). 1 rm $badname 2>/dev/null
2 # 这样错误信息[标准错误]就被丢到太平洋去了.
禁止标准输出和标准错误的输出. 1 cat $filename 2>/dev/null >/dev/null
2 # 如果”$filename”不存在,将不会有任何错误信息提示.
3 # 如果”$filename”存在, 文件的内容不会打印到标准输出.
4 # 因此Therefore, 上面的代码根本不会输出任何信息.
5 #
6 # 当只想测试命令的退出码而不想有任何输出时非常有用。
7 #
8 #
9 # cat $filename &>/dev/null
10 # 也可以, 由 Baris Cicek 指出.
Deleting contents of a file, but preserving the file itself, with all attendant permissions (from Example 2-1 and Example 2-3): 1 cat /dev/null > /var/log/messages
2 # : > /var/log/messages 有同样的效果, 但不会产生新的进程.(因为:是内建的)
3
4 cat /dev/null > /var/log/wtmp
自动清空日志文件的内容 (特别适合处理这些由商业Web站点发送的讨厌的”cookies”):
例子 28-1. 隐藏cookie而不再使用
1 if [ -f ~/.netscape/cookies ] # 如果存在则删除.
2 then
3 rm -f ~/.netscape/cookies
4 fi
5
6 ln -s /dev/null ~/.netscape/cookies
7 # 现在所有的cookies都会丢入黑洞而不会保存在磁盘上了.
使用/dev/zero 像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的). 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到. /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件.
例子 28-2. 用/dev/zero创建一个交换临时文件
1 #!/bin/bash
2 # 创建一个交换文件.
3
4 ROOT_UID=0 # Root 用户的 $UID 是 0.
5 E_WRONG_USER=65 # 不是 root?
6
7 FILE=/swap
8 BLOCKSIZE=1024
9 MINBLOCKS=40
10 SUCCESS=0
11
12
13 # 这个脚本必须用root来运行.
14 if [ “$UID” -ne “$ROOT_UID” ]
15 then
16 echo; echo “You must be root to run this script.”; echo
17 exit $E_WRONG_USER
18 fi
19
20
21 blocks=${1:-$MINBLOCKS} # 如果命令行没有指定,
22 #+ 则设置为默认的40块.
23 # 上面这句等同如:
24 # ————————————————–
25 # if [ -n “$1” ]
26 # then
27 # blocks=$1
28 # else
29 # blocks=$MINBLOCKS
30 # fi
31 # ————————————————–
32
33
34 if [ “$blocks” -lt $MINBLOCKS ]
35 then
36 blocks=$MINBLOCKS # 最少要有 40 个块长.
37 fi
38
39
40 echo “Creating swap file of size $blocks blocks (KB).”

41 dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # 把零写入文件.
42
43 mkswap $FILE $blocks # 将此文件建为交换文件(或称交换分区).
44 swapon $FILE # 激活交换文件.
45
46 echo “Swap file created and activated.”
47
48 exit $SUCCESS
关于 /dev/zero 的另一个应用是为特定的目的而用零去填充一个指定大小的文件, 如挂载一个文件系统到环回设备 (loopback device) (参考例子 13-8) 或”安全地” 删除一个文件(参考例子 12-55).
例子 28-3. 创建ramdisk
1 #!/bin/bash
2 # ramdisk.sh
3
4 # “ramdisk”是系统RAM内存的一段,
5 #+ 它可以被当成是一个文件系统来操作.
6 # 它的优点是存取速度非常快 (包括读和写).
7 # 缺点: 易失性, 当计算机重启或关机时会丢失数据.
8 #+ 会减少系统可用的RAM.
9 #
10 # 那么ramdisk有什么作用呢?
11 # 保存一个较大的数据集在ramdisk, 比如一张表或字典,
12 #+ 这样可以加速数据查询, 因为在内存里查找比在磁盘里查找快得多.
13
14
15 E_NON_ROOT_USER=70 # 必须用root来运行.
16 ROOTUSER_NAME=root
17
18 MOUNTPT=/mnt/ramdisk
19 SIZE=2000 # 2K 个块 (可以合适的做修改)
20 BLOCKSIZE=1024 # 每块有1K (1024 byte) 的大小
21 DEVICE=/dev/ram0 # 第一个 ram 设备
22
23 username=`id -nu`
24 if [ “$username” != “$ROOTUSER_NAME” ]
25 then
26 echo “Must be root to run \”`basename $0`\”.”

27 exit $E_NON_ROOT_USER
28 fi
29
30 if [ ! -d “$MOUNTPT” ] # 测试挂载点是否已经存在了,
31 then #+ 如果这个脚本已经运行了好几次了就不会再建这个目录了
32 mkdir $MOUNTPT #+ 因为前面已经建立了.
33 fi
34
35 dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE # 把RAM设备的内容用零填充.
36 # 为何需要这么做?
37 mke2fs $DEVICE # 在RAM设备上创建一个ext2文件系统.
38 mount $DEVICE $MOUNTPT # 挂载设备.
39 chmod 777 $MOUNTPT # 使普通用户也可以存取这个ramdisk.
40 # 但是, 只能由root来缷载它.
41
42 echo “\”$MOUNTPT\” now available for use.”
43 # 现在 ramdisk 即使普通用户也可以用来存取文件了.
44
45 # 注意, ramdisk是易失的, 所以当计算机系统重启或关机时ramdisk里的内容会消失.
46 #
47 # 拷贝所有你想保存文件到一个常规的磁盘目录下.
48
49 # 重启之后, 运行这个脚本再次建立起一个 ramdisk.
50 # 仅重新加载 /mnt/ramdisk 而没有其他的步骤将不会正确工作.
51
52 # 如果加以改进, 这个脚本可以放在 /etc/rc.d/rc.local,
53 #+ 以使系统启动时能自动设立一个ramdisk.
54 # 这样很合适速度要求高的数据库服务器.
55
56 exit 0
这样,一些诸如一些错误信息就不会显示出来。
// ]]>

linux dd命令使用详解

dd 的主要选项:

指定数字的地方若以下列字符结尾乘以相应的数字:

b=512, c=1, k=1024, w=2, xm=number m

if=file

输入文件名,缺省为标准输入。

of=file

输出文件名,缺省为标准输出。

ibs=bytes

一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。

obs=bytes

一次写 bytes 个字节(即一个块大小为 bytes 个字节)。

bs=bytes

同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。

cbs=bytes

一次转换 bytes 个字节,即转换缓冲区大小。

skip=blocks

从输入文件开头跳过 blocks 个块后再开始复制。

seek=blocks

从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)。

count=blocks

仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。

conv=conversion[,conversion…]

用指定的参数转换文件。

转换参数:

ascii 转换 EBCDIC 为 ASCII。

ebcdic 转换 ASCII 为 EBCDIC。

ibm 转换 ASCII 为 alternate EBCDIC.

block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

unblock 使每一行的长度都为 cbs ,不足部分用空格填充。

lcase 把大写字符转换为小写字符。

ucase 把小写字符转换为大写字符。

swab 交换输入的每对字节。

noerror 出错时不停止。

notrunc 不截短输出文件。

sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

2.实例分析

2.1.数据备份与恢复

2.1.1整盘数据备份与恢复
备份:

dd if=/dev/hdx of=/dev/hdy
将本地的/dev/hdx整盘备份到/dev/hdy

dd if=/dev/hdx of=/path/to/image
将/dev/hdx全盘数据备份到指定路径的image文件

dd if=/dev/hdx | gzip >/path/to/image.gz
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

恢复:
dd if=/path/to/image of=/dev/hdx
将备份文件恢复到指定盘

gzip -dc /path/to/image.gz | dd of=/dev/hdx
将压缩的备份文件恢复到指定盘

2.1.2.利用netcat远程备份

dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
在源主机上执行此命令备份/dev/hda

netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入/dev/hdc

netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
以上两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当前目录。

2.1.3.备份MBR
备份:

dd if=/dev/hdx of=/path/to/image count=1 bs=512
备份磁盘开始的512Byte大小的MBR信息到指定文件

恢复:

dd if=/path/to/image of=/dev/hdx
将备份的MBR信息写到磁盘开始部分

2.1.4.备份软盘

dd if=/dev/fd0 of=disk.img count=1 bs=1440k
将软驱数据备份到当前目录的disk.img文件

2.1.5.拷贝内存资料到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件

2.1.6.从光盘拷贝iso镜像

dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件

2.2.增加Swap分区文件大小

dd if=/dev/zero of=/swapfile bs=1024 count=262144
创建一个足够大的文件(此处为256M)

mkswap /swapfile
把这个文件变成swap文件

swapon /swapfile
启用这个swap文件

/swapfile swap swap defaults 0 0
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行

2.3.销毁磁盘数据

dd if=/dev/urandom of=/dev/hda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作无法执行。

2.4磁盘管理

2.4.1.得到最恰当的block size

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小

2.4.2测试硬盘读写速度

dd if=/root/1Gb.file bs=64k | dd of=/dev/null
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
通过上两个命令输出的执行时间,可以计算出测试硬盘的读/写速度

2.4.3.修复硬盘

dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生magnetic flux point。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生。且这个过程是安全,高效的。

修改自己的路默认web端口

1. 如果装有防火墙,再将防火墙的端口打开(在LUM新版本中,可以配置防火墙)

2. 打开/usr/local/apache_LuManager/conf/httpd.conf
找到
Listen 8888
将Listen的8888改为你需要的端口号

3. 更改/usr/local/LuNamp/cmd/cron_common.sh文件,将其中的8888改成新的端口。新版已经改成cron_cmd.sh文件,包含flows.sh。即,修改flows.sh中的8888为所需端口号。

4. 执行lum-restart重启LUM

猫大的最新版vps备份脚本

更新,2012年5月14日
发现猫大新脚本中有错误,需要修改两处代码。
1、添加sed -i ‘s/performance_schema //g’ mysqldata。注意,mysql5.1以前是没有这个库的,可以不用添加。
2、去掉tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz后面的.gz。
3、修改发送邮件语句
echo “主题:数据库备份” | mutt -a /home/backup/$DataBakName -s “内容:数据库备份” $MAIL_TO

echo “数据库备份,有问题可访问https://moper.me咨询” | mutt $MAIL_TO -s “数据库备份” -a /home/backup/$DataBakName
原语句好像不能发送成功了。
测试环境为centos6,如果没有安装邮件发送程序,请先安装yum install sendmail mutt。
以下代码已更新!最新版为https://moper.me/AutoBackupToFtp2.sh

联系了一下猫大,自动备份的脚本更改了一下。额,由于学艺不精,也不知道我上一篇文章改的对不对。不过看了一下猫大现在的脚本应该是没有问题的。难道是我自己没有注意到更新,抱歉了。下面再贴一下脚本全文。有一点需要注意的,请保存为UTF-8,并且换行编码为Unix(LF)。或者你也可以直接去下载这个文件。
猫言猫语最新版
https://moper.me/AutoBackupToFtp2.sh
moper修改的老版
https://moper.me/AutoBackupToFtp_moper.sh
文章链接《centos6下猫大自动备份脚本问题修正》
猫言猫语老版
https://moper.me/AutoBackupToFtp.sh
文章链接《AutoBackupToFtp.sh自动备份脚本》

#!/bin/bash
#你要修改的地方从这里开始
MYSQL_USER=root                             #mysql用户名
MYSQL_PASS=123456                      #mysql密码
MAIL_TO=i@moper.me                 #数据库发送到的邮箱
FTP_USER=moper                              #ftp用户名
FTP_PASS=123456                         #ftp密码
FTP_IP=imcat.in                          #ftp地址
FTP_backup=backup                          #ftp上存放备份文件的目录,这个要自己得ftp上面建的
WEB_DATA=/home/www                          #要备份的网站数据
#你要修改的地方从这里结束

#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
#删除本地3天前的数据
rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz
cd /home/backup
#导出数据库,一个数据库一个压缩文件
/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs > mysqldata
sed -i 's/information_schema //g' mysqldata
sed -i 's/performance_schema //g' mysqldata
sed -i 's/mysql //g' mysqldata
for db in `cat mysqldata`; do
    (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS --databases ${db}> ${db}.sql)
done
#压缩数据库文件为一个文件
tar zcf /home/backup/$DataBakName /home/backup/*.sql
rm -rf /home/backup/*.sql mysqldata
#发送数据库到Email,如果数据库压缩后太大,请注释这行
echo "数据库备份,有问题可访问https://moper.me咨询" | mutt $MAIL_TO -s "数据库备份" -a /home/backup/$DataBakName
#压缩网站数据
tar zcf /home/backup/$WebBakName $WEB_DATA
#上传到FTP空间,删除FTP空间5天前的数据
ftp -v -n $FTP_IP << END
user $FTP_USER $FTP_PASS
type binary
cd $FTP_backup
delete $OldData
delete $OldWeb
put $DataBakName
put $WebBakName
bye
END

如何卸载lnmp

killall nginx *//终止nginx进程
/etc/init.d/mysql stop *//关闭mysql
killall mysqld *//终止mysql进程
/usr/local/php/sbin/php-fpm stop *//关闭php
killall php-cgi *//终止php-cgi进程
rm -rf /usr/local/php *//删除php文件
rm -rf /usr/local/nginx *//删除nginx文件
rm -rf /usr/local/mysql *//删除mysql文件
rm -rf /usr/local/zend *//删除zend文件
rm /etc/my.cnf *//删除配置文件
rm /etc/init.d/mysql *//删除mysql文件
rm /root/vhost.sh *//删除配置虚拟主机脚本
rm /root/lnmp *//删除lnmp文件夹

Linux下命令行安装VMware-tools

1)先在VMware里安装好Linux,并保持Linux处于运行状态

2)VMware的菜单里有个Install VMware Tools…的选项,点击它

3)进到VMWare中的Linux里(用root登录),在命令行下挂载光驱:
mount /dev/cdrom /mnt

4)然后cd /mnt

5)/mnt下面有个VMware-tools-xxxxxx.rpm,类似于这种的文件(具体文件名和你VMware版本有关)。执行:
rpm -ivh VMware-tools-xxxxxxxxxxx.rpm
安装这个rpm包,然后就ok了

Linux命令行修改IP、网关、DNS的方法

方式一:
ifconfig eth0 192.168.1.18 netmask 255.255.255.0
说明:该种方式可以使改变即时生效,重启后会恢复为原来的IP

方式二:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
说明:该方式要重启后生效,且是永久的
如果要立即更改且永久生效,就只能以上两种方式同时使用了。
以上是通过linux命令行修改IP的方法。
网卡eth0 IP修改为 102.168.0.1
ifconfig eth0 102.168.0.1 netmask 255.255.255.0

网关修改为 102.168.0.254
route add default gw 102.168.0.254

Linux命令行修改dns
echo “nameserver 202.202.202.20 “>> /etc/resolv.conf
重启网络服务
例子:由原来的DHCP改固定IP
DEVICE=eth0
HWADDR=00:0C:29:F7:EF:BF
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.0.68
GATEWAY=192.168.0.1
加上红色即可

重启网卡:
/etc/init.d/network restart
ifconfig eth0 新ip
然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip

[aeolus@db1 network-scripts]$ vi ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=219.136.241.211
NETMASK=255.255.255.128
GATEWAY=219.136.241.254

[aeolus@db1 etc]$ vi resolv.conf

nameserver 202.96.128.68
nameserver 219.136.241.206

-----------------------
Linux下修改网卡IP和网关

建议通过终端字符方式下来修改
一修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.33
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
~

vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.2.34
NETMASK=255.255.255.0
USERCTL=no
PEERDNS=no
TYPE=Ethernet
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
二修改网关
vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=Aaron
GATEWAY=192.168.1.1

三重新启动网络配置
/etc/init.d/network restart

———————————————————————————–

修改配置文件

/etc/sysconfig/network-scripts/ 下有配置文件

比如文件:ifcfg-eth0 代表是以太网实际网卡0的配置文件

比如文件:ifcfg-eth0:1 代表是以太网实际网卡0的配置文件

域名服务器配置文件:/etc/ resolv.conf

修改ip地址
即时生效:
# ifconfig eth0 192.168.0.20 netmask 255.255.255.0
启动生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0

修改default gateway
即时生效:
# route add default gw 192.168.0.254
启动生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0

修改dns
修改/etc/resolv.conf
修改后可即时生效,启动同样有效

修改host name
即时生效:
# hostname fc2
启动生效:
修改/etc/sysconfig/network
# Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
DEVICE=eth0 接口名称
BOOTPROTO=none 静态配置,若该值为“dhcp”则为动态获得,另外 static也是表示静态ip地址
BROADCAST=192.168.10.255 广播地址,通过IP地址和子网掩码自动计算得到
HWADDR=00:13:D3:27:9F:80
IPADDR=192.168.10.238
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.10.0 指定网络,通过IP地址和子网掩码自动计算得到
ONBOOT=yes 开机时自动加载
GATEWAY=192.168.10.1
TYPE=Ethernet
PEERDNS=yes
USERCTL=no

ifdown eth0 关闭网络
ifconfig eth0 down 关闭网络

ifup eth0 开启网络
ifconfig eth0 up 开启网络

设置dns
/etc/resolv.conf

nameserver 61.144.56.101
nameserver 202.96.128.166

[yeger@yeger ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.96.128.86
nameserver 202.96.128.166

其他方面
service network start //启动网络服务
service network stop //停止网络服务
service network restart //重启网络服务
service network status //查看网络服务状态

ifconfig eth0 192.168.10.222 netmask 255.255.255.0 //临时修改接口IP地址(无需重启接口)

[yeger@yeger ~]$ sudo ifconfig wlan0 192.168.21.199 netmask 255.255.255.0
[yeger@yeger ~]$ ifconfig wlan0
wlan0 Link encap:Ethernet HWaddr 00:02:72:77:BB:D1
inet addr:192.168.21.199 Bcast:192.168.21.255 Mask:255.255.255.0
inet6 addr: fe80::202:72ff:fe77:bbd1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3246 errors:0 dropped:0 overruns:0 frame:0
TX packets:1947 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4514869 (4.3 MiB) TX bytes:177732 (173.5 KiB)
wlan0 表示第一块无线以太网卡
Link encap 表示该网卡位于OSI物理层(Physical Layer)的名称
HWaddr 表示网卡的MAC地址(Hardware Address)
inet addr 表示该网卡在TCP/IP网络中的IP地址
Bcast 表示广播地址(Broad Address)
Mask 表示子网掩码(Subnet Mask)
MTU 表示最大传送单元,不同局域网 MTU值不一定相同,对以太网来说,MTU的默认设置是1500个字节
Metric 表示度量值,通常用于计算路由成本
RX 表示接收的数据包
TX 表示发送的数据包
collisions 表示数据包冲突的次数
txqueuelen 表示传送列队(Transfer Queue)长度
interrupt 表示该网卡的IRQ中断号
Base address 表示I/O地址
配置虚拟网卡IP地址:网卡需要拥有多个IP地址
命令格式: ifconfig 网卡名:虚拟网卡ID IP地址 netmask 子网掩码
[yeger@yeger ~]$ sudo ifconfig wlan0:1 192.168.21.188 netmask 255.255.255.0
更改网卡MAC地址
ifconfig 网卡名 hw ether MAC地址
[yeger@yeger ~]$ ifconfig wlan0 hw ether 00:11:22:33:44:55

SIOCSIFHWADDR: 不允许的操作
[yeger@yeger ~]$ sudo ifconfig wlan0 hw ether 00:11:22:33:44:55
SIOCSIFHWADDR: 设备或资源忙
[yeger@yeger ~]$ ifconfig wlan0 down
SIOCSIFFLAGS: 权限不够
[yeger@yeger ~]$ sudo ifconfig wlan0 down
[yeger@yeger ~]$ sudo ifconfig wlan0 hw ether 00:11:22:33:44:55
更改成功

[yeger@yeger ~]$ netstat -ant 查看端口信息 a 所有 n数字显示 t tcp协议 u udp协议
Active Internet connections (servers and established 已建立连接)
Proto Recv-Q Send-Q Local Address Foreign Address State
协议 本地地址 远程地址 连接状态
类型
tcp 0 0 0.0.0.0:57798 0.0.0.0:* LISTEN listen表示监听状态
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN

[yeger@yeger ~]$ netstat -r 查看路由表
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.21.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
default 192.168.21.1 0.0.0.0 UG 0 0 0 wlan0

[yeger@yeger ~]$ netstat -i 查看网络接口状态
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 0 0 0 0 0 BMU
lo 16436 0 230 0 0 0 230 0 0 0 LRU
virbr0 1500 0 0 0 0 0 29 0 0 0 BMRU
wlan0 1500 0 10546 0 0 0 7060 0 0 0 BMRU
wmaster0 0 0 0 0 0 0 0 0 0 0 RU
[yeger@yeger ~]$
MTU字段:表示最大传输单元,即网络接口传输数据包的最大值。
Met字段:表示度量值,越小优先级越高。
RX-OK/TX-OK:分别表示接收、发送的数据包数量。
RX-ERR/TX-ERR:表示接收、发送的错误数据包数量。
RX-DRP/TX-DRP:表示丢弃的数量。
RX-OVR/TX-OVR:表示丢失数据包数量。
[yeger@yeger ~]$ nslookup www.baidu.com 测试域名解析
Server: 202.96.128.86
Address: 202.96.128.86#53

Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 119.75.218.45
Name: www.a.shifen.com
Address: 119.75.218.45

详解/etc/passwd文件

vi /etc/passwd
用户到管理员得用su转换.

转载:

《关于/etc/passwd文件》
1:/etc/passwd 是系统识别用户的一个文件
当我们以root这个账号登录时,系统首先会查阅 /etc/passwd 文件,看是否有root这个账号,然后确定root的UID,通过UID 来确认用户和身份,如果存在则读取/etc/shadow 影子文件中所对应的beinan的密码;如果密码核实无误则登录系统,读取用户的配置文件;
2:/etc/passwd 的内容理解:
root:x:0:0:root:/root:/bin/bash
用户名:口令:UID:GID:用户名全称:用户的家目录:所用的SHELL的类型
3:关于UID的理解
UID 是确认用户权限的标识,用户登录系统所处的角色是通过UID 来实现的,而非用户名
具体相见——-http://www.linuxsir.org/main/?q=node/98
用户(User)和用户组(Group)配置文件详解

《unix /etc/passwd文件详解》
  view plainprint?

  root:x:0:0: root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

  用户名: 密码 : uid : gid :用户描述:主目录:登陆shell UID :每个用户必须被分配一个userid,“0”为root保留ID.1-99为系统保留,分配给系统预定义帐号。HP-UX10.20支持2 147 483 646.HP-UX10.20以前支持不大于60000个。

  系统中有一类用户称为伪用户(psuedo users),这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如表8-1所示。

  表8-1 /etc/passwd文件中常见的伪用户伪 用 户含 义bin拥有可执行的用户命令文件sys拥有系统文件adm拥有帐户文件uucp UUCP使用lp lp或lpd子系统使用nobody NFS使用除上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。

  /etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用“:”隔开。这些字段是:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间

  view plainprint?

  # more /etc/passwd

  root:!:0:0::/:/usr/bin/ksh

  daemon:!:1:1::/etc:

  bin:!:2:2::/bin:

  sys:!:3:3::/usr/sys:

  adm:!:4:4::/var/adm:

  uucp:!:5:5::/usr/lib/uucp:

  guest:!:100:100::/home/guest:

  nobody:!:4294967294:4294967294::/:

  lpd:!:9:4294967294::/:

  lp:*:11:11::/var/spool/lp:/bin/false

  invscout:*:6:12::/var/adm/invscout:/usr/bin/ksh

  snapp:*:200:13:snapp login user:/usr/sbin/snapp:/usr/sbin/snappd

  ipsec:*:201:1::/etc/ipsec:/usr/bin/ksh

  nuucp:*:7:5:uucp login user:/var/spool/uucppublic:/usr/sbin/uucp/uucico

  pconsole:*:8:0::/var/adm/pconsole:/usr/bin/ksh

  esaadmin:*:10:0::/var/esa:/usr/bin/ksh

  oraprod:!:500:501::/home/oraprod:/usr/bin/ksh

  sshd:*:202:206::/var/empty:/usr/bin/ksh

  appprod:!:501:502::/home/appprod:/usr/bin/ksh

《linux中/etc/passwd文件详解》

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(分隔为7个字段,其格式和具体含义如下: 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
例如:
root:x:0:0:Superuser:/:
daemon:x:1:1:Systemdaemons:/etc:
bin:x:2:2:Ownerofsystemcommands:/bin:
sys:x:3:3:Ownerofsystemfiles:/usr/sys:
adm:x:4:4:Systemaccounting:/usr/adm:
uucp:x:5:5:UUCPadministrator:/usr/lib/uucp:
auth:x:7:21:Authenticationadministrator:/tcb/files/auth:
cron:x:9:16:Crondaemon:/usr/spool/cron:
listen:x:37:4:Networkdaemon:/usr/net/nls:
lp:x:71:18:Printeradministrator:/usr/spool/lp:
sam:x:200:50:Samsan:/usr/sam:/bin/sh
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
“用户名”是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

“口 令”一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读, 所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc /shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

“用户标识号”是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

“组标识号”字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。

“注释性描述”字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
“主目录”,也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的 名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

用户登录后,要启动 一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之 间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有 sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS- 20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不 指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
系统中有一类用户称为伪用户(psuedousers),这些用户在Linux /etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下所示。
伪用户含义
bin拥有可执行的用户命令文件
sys拥有系统文件
adm拥有帐户文件
uucpUUCP使用
lplp或lpd子系统使用
nobodyNFS使用
拥有帐户文件
除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit,cron,mail,usenet等,它们也都各自为相关的进程和文件所需要。
由 于Linux /etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较 高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。只有超级用户才拥有该文件读权限,这就保 证了用户密码的安全性。