Linux Mount 挂载

挂载新磁盘

1
2
3
4
5
6
7
fdisk /dev/hdb   
n(增加新分区)-p(建立扩展分区)-1(建立1个扩展分区)-回车-回车-p(检查分区是不是已经建立)-w(保存)
mkfs.ext3 /dev/hdb1 格式化hdb1 
mkdir /www 建立WWW目录
vi /etc/fstab 更改分区表n
增加/dev/hdb1 /www ext3 defaults 1 1
mount -a 重新装载所有的点

Linux挂载存储

1
2
mount -t nfs ip:/test /test
/bin/mount -t cifs -o username=user,password="password",nounix,noserverino  //192.168.1.188/test /mulinux/test

windows 挂载nfs

1
2
3
4
5
6
/mnt/work/ 目录权限为777或者属主为nfs用户
cat /etc/exports
/mnt/work/ 192.168.8.199/32(ro,sync)

net use /persistent:yes
mount 192.168.1.5:/mulinux/History X:

fstab 保存失败

1
2
3
mount /dev/sdc1 /www
mount -o remout,rw /      mount -o remount,rw /www
mount -a

卸载

1
umount -l 强制卸载

Vsftp 部署及使用

安装vsftp db4-utils

1
2
yum install -y vsftpd db4-utils    #生成口令库需要db4
/etc/init.d/vsftpd restart

配置vsftp

vsftp默认情况下可以用系统用户登录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES  取消注释

useradd virftp -s /sbin/nologin      #建立虚拟账号相关联的系统账号

vi  /etc/vsftpd/vsftpd_user    #建立虚拟账户相关的文件,在里面填写用户名和账号,第一行账号,第二行密码,依次类推

    test1
    123456
    test2
    abcdef

chmod 600 /etc/vsftpd/vsftpd_user

db_load -T -t hash -f /etc/vsftpd/vsftpd_user /etc/vsftpd/vsftpd_user.db    # 建立访问者的口令库文件

建立虚拟账号及目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
mkdir  /etc/vsftpd/vsftpd_user_conf    #建立虚拟账号相关的目录
cd   /etc/vsftpd/vsftpd_user_conf    
vi test1    #创建和用户对应的配置文件
local_root=/home/virftp/test1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000

mkdir /home/virftp/test1    #创建FTP用户test1访问的目录
chown -R virftp:virftp /home/virftp

进入/etc/pam.d/编辑配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
vi /etc/pam.d/vsftpd    #在最开头添加两行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_user   
#如果是64位系统,则改为/lib64/security/pam_userdb.so 
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_user   
#如果是64位系统,则改为/lib64/security/pam_userdb.so

vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES改为anonymous_enable=NO
#anon_upload_enable=YES 改为 anon_upload_enable=NO
#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

再添加如下内容
chroot_local_user=YES
guest_enable=YES    #启用虚拟用户
guest_username=virftp    #虚拟用户映射到的系统账号
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf    #虚拟用户配置文件存放目录

grep -v "^#" /etc/vsftpd/vsftpd.conf >vsftpd.bak    #备份配置

重启服务

1
/etc/init.d/vsftpd start

使用ftp

Linux

1
2
wget --ftp-user=user --ftp-password=password ftp://ip/test/test.rar
wget  ftp://"uesr:password"@ip:port/test/test.rar

Windows

filezilla

Gitlab 部署及升级

gitlab部署

使用yum安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# yum install curl policycoreutils openssh-server openssh-clients
# systemctl enable sshd
# systemctl start sshd
# yum install postfix
# systemctl enable postfix
# systemctl start postfix
# firewall-cmd --permanent --add-service=http
# systemctl reload firewalld
# vi /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
# yum makecache
# yum install gitlab-ce
# gitlab-ctl reconfigure
# vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
# vi /opt/gitlab/embedded/conf/nginx.conf
# vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
# vi /etc/gitlab/gitlab.rb
# git clone https://gitlab.com/xhang/gitlab.git
# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# git diff origin/8-8-stable origin/8-8-zh > /tmp/8.8.diff
# gitlab-ctl stop
# cd /opt/gitlab/embedded/service/gitlab-rails
# git apply /tmp/8.8.diff
# gitlab-ctl start
# /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml	#将host改为192.168.2.169

gitlab升级

1
2
3
4
# wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/6/gitlab-ce-8.15.1-ce.0.el6.x86_64.rpm/download
# rpm -Uvh gitlab-ce-8.15.1-ce.0.el6.x86_64.rpm 
# gitlab-ctl reconfigure
# gitlab-ctl restart

Linux Mail

安装mailx

1
2
3
4
5
6
7
先查询一下有没有安装过
#rpm -qa |grep mailx

没安装的话执行安装
#yum install mailx
#rpm -qa |grep mailx
mailx-12.4-8.el6_6.x86_64

配置发件账户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
编辑/etc/mail.rc ,加入如下语句:
set from=user@tom.com smtp=smtp.tom.com
set smtp-auth-user=your_E-mail_address smtp-auth-password=your_password
set smtp-auth=login

说明:
from                   就是发送者的邮件地址,就是你自己的一个可用的邮件地址。
smtp                   是指提供邮件服务的主机,比如smtp.tom.com; smtp.126.com等
smtp-auth-user       是指你在服务主机上的邮箱用户名
smtp-auth-password 当然是你在smtp主机上的密码
smtp-auth              验证方式了

因为配置中提供的密码是明文的,所以最好 chmod 600 .mailrc,以免泄密。

发邮件测试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
发送格式:
mailx -s subject user@xxx.com < message_file
subject表示邮件主题;user@xxx.com是收件人,<mes_file是需要发送的邮件内容。

如:

mailx -s "test mail" zdd@163.com &lt; msg
或者
cat msg | mailx -s "test mail" zdd@163.com

多个收件人之间用逗号分隔
cat msg | mailx -s "test mail" zdd@163.com,zdd2@163.com,zdd2@163.com

也可以直接从命令行输入邮件内容:
mailx -s "test mail" zdd@163.com

上面这条命令会进入命令行输入状态,此时可以输入内容,按Ctrl+d键来结束输入。

其他选项

-r 指定发件人

Linux Sendmail

安装sendemail

1
2
3
# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz //下载1.56版本
# tar -xzvf sendEmail-v1.56.tar.gz
# mv sendEmail /usr/local/bin/

发送邮件

1
#  /usr/local/bin/sendEmail -f mulinux@163.com -t mulinux@qq.com \    -s smtp.163.com -u "我是邮件主题" -o message-content-type=html \    -o message-charset=utf8 -xu mulinux@163.com -xp 123456 -m "我是邮件内容"

命令说明

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
/usr/local/bin/sendEmail 命令主程序
-f mulinux@163.com  发件人邮箱
-s smtp.163.com       发件人邮箱的smtp服务器
-u "我是邮件主题"     邮件的标题
-o message-content-type=html   邮件内容的格式,html表示它是html格式
-o message-charset=utf8        邮件内容编码
-xu mulinux@163.com          发件人邮箱的用户名
-xp 123456               发件人邮箱密码
-m "我是邮件内容"        邮件的具体内容
发送成功之后会有如下提示:Email was sent successfully!

查看帮助:sendEmail --help

注:需提交开启发件账号的pop3/smtp,163或者qq邮箱的密码使用授权码即可。

参考:http://www.ttlsa.com/linux/use-sendemail/

禁止root登录,su&sudo用户身份切换到user1登录

禁止root登录

1
2
vim /etc/ssh/sshd_config 加入一行:
PermitRootLogin no

切换到user1登录

1
2
3
4
5
su - 用来初始化环境变量 $PATH $HOME等
sudo su到root需要输入root的密码不安全
visudo 编辑/etc/sudoers 配置文件 没有命令需安装 yum install -y sudo
格式: user host=(as_user) commands
比如: user1 ALL=(ALL) NOPASSWD: SU //它的意思是,让user1这个普通用户,拥有root的权限

Linux 常用命令

find

1
2
3
4
5
6
7
8
find . -size +100M -exec du -sh {} \; #查找当前目录下大于100M的文件
find  . -maxdepth  2  -name 201507*   -exec  rm -rf {} \; #清理备份命令
find / -type f -name "test.txt" | xargs rm -f  #查找并删除
find / -type f -name "test.txt" -exec rm -rf {} \; #查找并删除
find / -type f -name "*.log" -mtime +5|xargs rm -f  #删除五天前的log文件  -type d 查找文件夹 -type f 查找文件
find / -type f -name 'test.txt' | xargs sed -i s#test#newtest#g    查找内容并替换
find / -type f -name '*.txt' | xargs cat  批量查看
find /mds -xdev -printf '%h\n' |sort|uniq -c|sort -k 1 -n # 查看Linux目录的inode数量

ls

1
ls -l --time-style=long-iso # 显示成年月日格式 

cut

1
2
3
4
5
6
7
-d :后面跟分隔字符,分隔字符要用单引号括起来
-c :后面接的是第几个字符
-f :后面接的是第几个区块
cut -d ':' -f 2 /etc/passwd
cut -d ':' -f 1-3 /etc/passwd
cut -d ':' -f 1,3 /etc/passwd
cut -c 2-5 /etc/passwd

sort

1
2
3
4
5
6
7
8
9
-t 分隔符 :作用跟cut的-d一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
sort -t ':' -k3 /etc/passwd
sort -t ':' -k3 -n /etc/passwd |cut -d ':' -f 3
cut -d ':' -f 3 /etc/passwd  | sort -n  常用
cut -d ':' -f 3 1.txt | sort -nr|uniq -c

awk

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
以冒号为分隔符取出IP
ifconfig eth0 | awk -F: '/inet addr/ {print $2}'| awk '{print $1}'

以一个或者多个空格和单个冒号作为分隔符取出ip
ifconfig eth0 | grep 'inet addr'|awk -F ' +|:' '{print $4}'

以一个或者多个空格和一个或者多个空格冒号作为分隔符取出ip
ifconfig eth0 | grep 'inet addr'|awk -F '[ :]+' '{print $4}'

过滤出404URL
cat access.log  |awk '$9~/404/' 

过滤出IP和url
grep -Ev  '(HTTP|GET)' access.log|awk '{print $1,$7}' access.log|sort | uniq -c |sort -n -k 1 -r

压缩解压

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
tar打包当前目录到tarname.tar
tar cvf tarname.tar ./*.* #tar zcvf tarname.tar.gz ./*.*

tar解压到当前目录
tar xvf tarname.tar #tar zxvf tarname.tar

zip压缩
zip -r data.zip data

zip解压
unzip data.zip -d databak

rar解压
rar -x data.rar

nslookup

1
2
3
4
cmd-->nslookup -qt=mx mulinux.com #查看域名mx记录
cmd-->nslookup-->set q=mx-->mulinux.com #查看域名的mx记录
cmd-->nslookup-->set q=any-->mulinux.com #查看mulinux.com的解析服务情况
nslookup -qa=ptr  (ip) #检测反向解析

tracert

1
2
windows:tracert -d mulinux.com    
linux:traceroute -d www.baidu.com

DD

整盘数据备份与恢复

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
备份:
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
将压缩的备份文件恢复到指定盘

利用netcat远程备份

1
2
3
4
5
6
7
8
9
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对数据进行压缩,并将备份文件保存在当前目录。

备份MBR

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

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

备份软盘

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

拷贝内存资料到硬盘

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

从光盘拷贝iso镜像

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

增加Swap分区文件大小

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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文件中增加一行

销毁磁盘数据

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

得到最恰当的block size

1
2
3
4
5
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大小

测试硬盘读写速度

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

修复硬盘

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

测试硬盘读写

1
2
3
4
5
6
7
dd if=/dev/zero of=test.dbf bs=8k count=200000 conv=fdatasync

参考文档:http://elf8848.iteye.com/blog/2089055

测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件。

测试指令:dd if=/dev/zero of=/data01/test.dbf bs=8k count=200000 conv=fdatasync

正确的使用dd进行磁盘读写速度测试

dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,所以可以用来测试硬盘的顺序读写能力。可以写文件,可以写裸设备。