nginx 重新加载配置文件 nginx -s reload
过滤某个端口 netstat -antp |grep 8000
让某一个文件变成可执行 chmod +x 文件名
php7+mysql5.7+nginx 需要手动改密码 临时密码在 /var/log/mysqld.log 里面
修改mysql密码 mysql_secure_installation
查看PHP的用户和用户组 /etc/php-fpm.d/www.conf
linux 中 查看文件大小为 ls -lth
分配数据库权限 GRANT all on *.* to "root"@"192.168.1.33" IDENTIFIED by "root";
linux下执行mysql的sql文件
mysql -uroot -proot
进入到mysql
然后执行source /var/ftp/pub/sogoodsoft.sql;
以下是Linux6.4的一些命令
配置网络:
cd /etc/sysconfig/network-scripts/ifcfg-eth0--à device=eth0
Onboot=yes
Ipaddr=ip地址
Netmask=默认网关
Gateway=子网掩码
Dns1=dns服务器
查看防火墙:
iptables -L
关闭防火墙:
iptables –F / service iptables stopà中夹杂着Enforcing为开启///不夹杂Ebforcing为关闭
查看selinux:
getenforce->Enforcingà开启状态//Permissiveà关闭状态
关闭selinux:
setenforce 0
开启selinux:
setenforce 1
进入目录:
cd
查看目录:
ls
创建文件夹:
mkdir 文件名
创建多级文件夹:
mkdir 文件名/{文件名,文件名} –p
创建文件:
touch 文件名
删除文件:
rmdir 文件名
删除多级文件:
rm –rf 文件名
复制:
cp 源文件 目标文件的目录
移动:
mv 源文件 目标文件的目录
测试网络是否通畅:
ping ip地址
查看现在所在的位置:
pwd
添加新的用户:
useradd 用户名
更改root的密码:
passwd
更改其他用户的密码:
passwd 用户名
关机:
init 0/shutdown –hnow/power off
重启:
reboot
启动/关闭/重启远程控制:
service sshd stare/stop/restart
远程控制其他电脑:
ssh root@需要控制的电脑的IP地址 (需要输入密码控制的那台电脑的密码)
编辑文件:
vim 文件名
Vim中的复制:
yy (数字yyà复制数字行)
Vim中的粘贴:
p
Vim中的不/显示行号:
set nonu/nu
Vim中跳到首行:
gg
Vim中跳到最后一行:
G
Vim中的删除:
dd
Vim中的多行删除:
数字ddà删除数字行
Vim中的保存是:
w àw!-强制的保存
Vim中的退出时:
q àq!—强制的退出
Vim中的保存并退出是:
wq!
Vim中删除多了撤销是:
u
获取文件后10行。
tail -10 文件名
查看占用系统资源比较多的进程
top查看关键字出现函数
grep -n ‘我是要查找的关键字’ 文件名 | cut -d “:” - f1
统计文件中关键字分别出现的哪一行:
grep -n"关键字" “文件路径” | cut -d":" -f1
统计文件中关键字出现的最后一行行号:
grep -n"关键字" “文件路径” | tail -n 1| cut -d ":" -f1
在/root/目录下搜索带有关键字“www”的文件,在终端下运行命令:
find /root/ –type f | xargs grep “www
统计文件 行数
wc -l a.txt统计demo目录下,js文件数量:
finddemo/ -name "*.js" |wc -l
统计demo目录下所有js文件代码行数:
finddemo/ -name "*.js" |xargs cat|wc -l
wc-l `find ./ -name "*.js"`|tail -n1
统计demo目录下所有js文件代码行数,过滤了空行:
find/demo -name "*.js" |xargs cat|grep -v ^$|wc -l
实时监控一个文件
tail -f a.log
nginx日志中访问最多的100个ip及访问次数
awk '{print $1}' /opt/software/nginx/logs/access.log|sort | uniq -c | sort -n -k 1 -r | head -n 100
Yum安装
挂载:
mount /dev/cdrom/mnt
取消挂载点:
umount /mnt
查看有无挂载点:
dfà显示/mnt为挂载成功
过滤文件:
ls|grep 文件名称
查看软件是否安装:
Rpm –qa|grep 软件名称
进入yum文件进行配置:
cd /etc/yum.repos.dàà保留一个以.repos.d结尾的文件àààvim 剩下的文件ààà
[随便写,没有规定]
name=随便写,无规定
baseurl=file:///mnt---------------à死规定
enabled=1--------------------------à死规定
gpgcheck=0------------------------à死规定
清除yum缓存:
yum claen all
检测yum是否搭建成功:
yumlist-------------------à显示好长的位搭建成功
进入挂载目录:
cd /mnt/Packages
安装软件:
yum install 软件名(常用的有{apacheàhttpd},{数据库àmysql},{php},{svn上线àsubversion},{ftp上线àvsftp},{缓存àmem…})
重新安装软件:
yum reinstall 软件名称
卸载软件:
yum remove /软件名称
启动服务:
service 服务名称 start {(apacheàhttpd),(mysql[数据库]àmysqld),(ftpàvsftp)}
重新启动服务:
service 服务名称 restart {(apacheàhttpd),(mysql[数据库]àmysqld),(ftpàvsftp)}
开机自启/取消自启:
chkconfig 服务名称 on/off {(apacheàhttpd),(mysql[数据库]àmysqld)}
查看权限:
ll
上线后报---Runtime----.php需要把root的权限改为Apache
Chown apache:apache Runtime/ -R à递归改权限,把Runtime关联权限全部改过来
Linux中进入数据库:
mysql –hlocalhost -uroot -pà回车
如果回车不能进入的话à-p后面打root再次回车即可进入
查看Linux中MySQL中有哪些库:
show databases;
Linux中的mysql给其他地址赋权限:(需要先进入数据库):
grant all on 需要赋权的数据库(*代表所有的数据库).需要赋权的表(*代表所有的表) to "连接名"@"需要赋权限的IP地址" identified by "密码(根据自己的喜好随便写à没有死规定)"; ---->显示Query ok 为成功
当想要把单个数据库赋权给其他用户要加上 FLUSH PRIVILEGES; 刷新一下赋过的权限
linux中更改数据库密码:{{先进入数据库}}:
setpassword for “root”@”localhost” = password(‘你需要设置的密码’);
linux中数据库的备份:{{{{不用进入数据库 }}}}:
mysqldump你需要备份的数据库的库名–u 你的用户名[一般用root作为用户名] –p >你要备份的数据库的名字(建议与前面一致)à需要备份到文件夹中,要进入文件夹 回车 显示Enter 的时候输入你数据库的密码就可以了
退出mysql:
exit/ctrl+c/ctrl+z
开机自启
vim /etc/rc.local
mount/dev/cdrom /mnt à-----------------------------à挂载
iptables –F/service iptables stop à-----------à关闭防火墙
chkconfig httpd onà-----------------àApache开机自启
chkconfig mysqld onà----------------à数据库开机自启
setenforce 0à------------------------------------à关闭selinux
service sshd restartà--------------------------à重启sshd服务
配置虚拟机
进入httpd的配置文件:
vim/etc/httpd/conf/httpd.conf
把NamevirtualHost前面的#去掉
下面的<Vir>标签的所有的#去掉
ServerAdminà随便写
DocumentRootà虚拟机文件的位置与名称
ServerNameà你需要配置的域名
其他的不用改
复制310多行以<Dir>开头的à共计6行
<Dir>开始位置”/你的虚拟机的文件的名称”
改配置文件需要重新启动服务
Svn
Svn的目录在:/usr/local/svnà(刚安装好的svn是没有svn这个文件夹的需要自己手动创建)
创建svn版本库:svnadmin create 你想要的版本库的名称
更改svn的配置:cd /版本库的名称/conf àls查看
进入文件更改配置(按顺序)
vim svn开头的文件
把12行的#和空格去掉(切记是全面无空格,必须顶头)并把登号后面改成none
把13行的#和空格去掉(切记是全面无空格,必须顶头)
把20行的#和空格去掉(切记是全面无空格,必须顶头)
把27行的#和空格去掉(切记是全面无空格,必须顶头)
Vim au开头的文件(切记是全面无空格,必须顶头)
在24行写组和用户(组=用户1,用户2【不限个数】)
把25行的东西删除只留[/]
把26行等号前面改成@你创建的组名
把28行的改成* = r
Vimpasswd中给你配置的个个用户配置密码(切记是全面无空格,必须顶头)
用户=密码
Linux上的svn自动检出
cd /usr/local/svnàhooksàcp post-commit.tmpl post-commitàchmod777 post-commit
vimpost-commità里面除了第一行以外的行全部删除àexport LANG=en_US.UTF-8 回车换行à/usr/bin/svnupdate ./版本库的名称–username (你在/usr/local/svn/conf/au开头的文件中配置的用户名) –password (你在/usr/local/svn/conf/passwd文件中配置的密码)
更改配置需要创新
Svn与其他的不一样需要查看进程。先杀死进程
查看进程号:
ps aux|grep svn
杀死进程:
kill -9 进程号 à显示有/usr/local/svn 的那个进程
启动svn:
svnserve -d -r /usr/local/svn
Linux上svn的检出:
svn checkut svn://linux的ip地址/版本库的名称 ./虚拟机的名称
Linux上的更新:
svn update
Linux上的添加:
svn add
Linux上的提交:
svn up
安装phpstudy
wget -c http://lamp.phpstudy.NET/phpstudy.bin #下载安装包
chmod +x phpstudy.bin #权限设置
./phpstudy.bin #运行安装
phpstudy start | stop | restart 开启 | 停止 | 重启数据库
phpstudy add | del | list 添加虚拟主机 | 删除虚拟主机 | 查看虚拟主机列表
apache配置文件:/phpstudy/server/httpd/conf/httpd.conf
PHP配置文件:/phpstudy/server/php/etc/php.ini
/phpstudy/mysql/bin/mysql -uroot -proot
UBUNTU中 散装的环境 进入数据库: mysql ->ent
进入单利模式修改密码(登录密码忘记):
在开机倒计时的时候按下键盘字母 “e” 出现界面在按下键盘 “e” 出新的界面选择第2个出现新的界面按空格一下然后按下键盘b键 出现新的界面(password)这时候输入你新的密码点下回车然后输入reboot就进入了。。
man
格式:man [-afpM] [命令]
作用:用来提供在线帮助,使用权限是所有用户
选项:
r -a:在所有的man帮助手册中搜索
r -f:等价于whatis指令,显示给定关键字的简短描述信息
r -P:指定内容时使用分页程序
r -M:指定man手册搜索的路径
示例一:使用man命令来查看ifconfig的使用方法
[root@vhxct67test1 ~]# man ifconfig|more
IFCONFIG(8) Linux Programmer’s Manual IFCONFIG(8)
NAME
ifconfig - configure a network interface
SYNOPSIS
ifconfig [interface]
ifconfig interface [aftype] options |address ...
NOTE
This program is obsolete! For replacement check ip addr and ip link.
For statistics use ip -s link.
ls
格式:ls [-alicfbd] [文件或目录]
作用:显示目录列表
选项:
r -a:显示所有档案及目录
r -A:显示除影藏文件“.”和“..”以外的所有文件列表
r -c:多列显示输出结果。这是默认选项
r -f:在每个输出项后追加文件的类型标识符,其中
“*”表示具有可执行权限的普通文件
“/”表示目录,“@”表示符号链接
“|”表示命令管道FIFO
“=”表示sockets 套接字
当文件为普通文件时,不输出任何标识符
r -b:将文件中的不可输出的字符以反斜线加字符编码的方式输出
r -d:仅显示目录名,而不显示目录下的内容列表
r -i:显示文件索引节点号(inode)。一个索引节点代表一个文件
r -k:以KB(千字节)为单位显示文件大小
r -l:以长格式显示目录下的内容列表
r -m:用“,”号区隔每个文件和目录的名称
r -n:以用户识别码和群组识别码替代其名称
r -s:显示文件和目录的大小,以区块为单位
r -t:用文件和目录的更改时间排序
r -L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录
r -r:递归处理,将指定目录下的所有文件及子目录一并处理
r --full-time:列出完整的日期与时间
r --color[=WHEN]:使用不同的颜色高亮显示不同类型的
示例一:ls –a 显示当前目录中的所有文件,包含隐藏文件
[root@vhxct67test1 ~]# ls -a
. .bash_profile Desktop .gconfd install.log Public .xsession-errors
.. .bashrc Documents .gnome2 install.log.syslog .pulse
.abrt .cache Downloads .gtk-bookmarks .local .pulse-cookie
anaconda-ks.cfg .config .esd_auth .gvfs Music .tcshrc
.bash_history .cshrc expect .ICEauthority .nautilus Templates
.bash_logout .dbus .gconf .imsettings.log Pictures Videos
示例二:ls –l 显示文件及其详细信息
[root@vhxct67test1 ~]# ls -l /mnt
total4
lrwxrwxrwx 1 root root 11 Nov 24 08:13 b.txt -> /test/b.txt
drwx------.2 root root 4096 Aug 2 04:34 hgfs
tree
格式:tree [-aACdDfFgilnNpqstux] [目录]
作用:tree以树状图样式列出目录的内容
选项:
r -a:显示所有文件和目录
r -A:使用ASNI绘图字符显示树状图而非以ASCII 字符组合
r -C:在文件和目录清单加上色彩,便于区分各种类型
r -d:先是目录名称而非内容
r -D:列出文件或目录的更改时间
r -f:在每个文件或目录之前,显示完整的相对路径名称
r -F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号
r -g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
r -i:不以阶梯状列出文件和目录名称
r -l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
r -n:不在文件和目录清单加上色彩
r -N:直接列出文件和目录名称,包括控制字符
r -p:列出权限标示
r -q:用“?”号取代控制字符,列出文件和目录名称
r -s:列出文件和目录大小
r -t:用文件和目录的更改时间排序
r -u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
r -x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该
r 目录予以排除在寻找范围外
示例一:
在/home下创建test目录并在目录下创建一些测试目录和文件,用tree查看:
[root@vhxrhel7test ~]# tree /test
/test
├── a
│ ├── b
│ │ └── c
│ └── No.one.txt
├── aa.txt
├── bb.txt
├── cc.txt
├── dd.txt
└── test.txt
pwd
格式:pwd
作用:命令以绝对路径的方式显示用户当前工作目录
示例一:显示当前目录
[root@vhxct67test1 ~]# pwd
/root
表示在root目录下。
示例二:cd到/home目录下并显示当前目录
[root@vhxct67test1 ~]# cd /home
[root@vhxct67test1 home]# pwd
/home
mkdir
格式:mkdir (选项) (参数)
作用:创建文件夹
选项:
r -m 设置文件夹权限
r -p 如果父目录不存在,则连同父目录一起创建
r -v 显示详细
r -Z 设置创建的目录SELinux为默认类型
r --context
r --help 显示帮助并退出
r --version 现实版本信息并退出
参数:
目录:指定要创建的目录列表,多个目录之间用空格隔开
示例:
在/home下创建test目录,设置权限为644
[root@localhost ~]# ls /home
hfx
[root@localhost ~]# mkdir -m 644 /home/test
[root@localhost ~]# ll /home/
total 0
drwx------. 3hfx hfx 74 Oct 21 18:04 hfx
drw-r--r-- 2 root root 6 Nov 7 15:45 test
在/mnt目录下创建连续目录/mnt/test1/test2/test3
[root@localhost ~]# ls /mnt/
[root@localhost ~]# mkdir /mnt/test1/test2/test3
mkdir: cannot create directory‘/mnt/test1/test2/test3’: No such file or directory
[root@localhost ~]# mkdir -p /mnt/test1/test2/test3
[root@localhost ~]# tree /mnt/
/mnt/
└── test1
└── test2
└── test3
3directories, 0 files
显示mkdir的版本信息
[root@localhost ~]# mkdir --version
mkdir (GNUcoreutils) 8.22
Copyright (C)2013 Free Software Foundation, Inc.
LicenseGPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is freesoftware: you are free to change and redistribute it.
There is NOWARRANTY, to the extent permitted by law.
Written byDavid MacKenzie.
rmdir
格式:rmdir (选项) (参数)
作用:用来删除空目录
选项:
r-p或—parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除
r--ignore-fail-on-non-empty 此选项使rmdir命令忽略由于删除非空目录时导致的错误信息
r-v或-verboes 显示命令的详细执行过程
r--help 显示命令的帮助信息
r--version 显示命令的版本信息
参数:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开
示例:
删除空目录/mnt/test1/test2/test3
[root@localhost ~]# rmdir -p/mnt/test1/test2/test3/
rmdir: failedto remove directory ‘/’: Device or resource busy
[root@localhost ~]# ls /mnt
ls: cannotaccess /mnt: No such file or directory
◆可以看到上面把我们的/mnt目录也一起删掉了,这就是-p选项的威力。
删除/mnt/test/非空目录
[root@localhost ~]# mkdir /mnt/test/
[root@localhost ~]# echo "test"> /mnt/test/a.txt
[root@localhost ~]# ll /mnt/test/
total 4
-rw-r--r-- 1root root 5 Nov 7 16:09 a.txt
[root@localhost ~]# rmdir /mnt/test/
rmdir: failedto remove ‘/mnt/test/’: Directory not empty
[root@localhost ~]# rmdir--ignore-fail-on-non-empty /mnt/test/
[root@localhost ~]# ll /mnt/test/
total 4
-rw-r--r-- 1root root 5 Nov 7 16:09 a.txt
◆虽然不能删除但是也不会报错了
使用-v选项删除/mnt下./test1/test2/test3目录
[root@localhost ~]# mkdir -p /mnt/test1/test2/test3
[root@localhost ~]# rmdir -p -v/mnt/test1/test2/test3/
rmdir:removing directory, ‘/mnt/test1/test2/test3/’
rmdir:removing directory, ‘/mnt/test1/test2’
rmdir:removing directory, ‘/mnt/test1’
rmdir:removing directory, ‘/mnt’
rmdir: failedto remove directory ‘/mnt’: Directory not empty
[root@localhost ~]# ll /mnt/
total 0
drwxr-xr-x 2root root 18 Nov 7 16:09 test
cd
格式:cd (选项) (参数)
作用:切换工作目录
选项:
r-p如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
r-L如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
r- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
参数:
需要切换到的工作目录,可以是绝对路径和可以是相对路径
r~ 当前用户的家目录
r.. 当前目录的上级目录
r. 当前目录
示例:
切换到/etc/sysconfig/network-scripts/目录下
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd/etc/sysconfig/network-scripts/
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
返回上级目录
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cd ..
[root@localhost sysconfig]# pwd
/etc/sysconfig
返回上两级目录
[root@localhost sysconfig]# pwd
/etc/sysconfig
[root@localhost sysconfig]# cd ../..
[root@localhost /]# pwd
/
进入当前用户主目录
[root@localhost /]# pwd
/
[root@localhost /]# cd ~
[root@localhost ~]# pwd
/root
或者用另一种写法直接cd
[root@localhost /]# pwd
/
[root@localhost /]# cd
[root@localhost ~]# pwd
/root
返回进入此目录之前所在的目录
[root@localhost /]# pwd
/
[root@localhost /]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]#
[root@localhost ~]# cd -
/
touch
格式:touch (选项) (参数)
作用:
一、是用来创建新的空文件
二、是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;
选项:
r-a: 或--time=atime或--time=access或--time=use 只更改存取时间
r-c: 或--no-create 不建立任何文件
r-d: <时间日期> 使用指定的日期时间,而非现在的时间
r-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
r-m:或--time=mtime或--time=modify 只更该变动时间
r-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同
r-t:<日期时间> 使用指定的日期时间,而非现在的时间; --help:在线帮助; --version:显示版本信息
参数:
一、指定要创建的空文件名称
二、指定要设置时间属性的文件名称
示例:
在目录/mnt下创建空文件 a.txt b.txt
[root@localhost mnt]# touch a.txt b.txt
[root@localhost mnt]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 716:59 a.txt
-rw-r--r-- 1 root root 0 Nov 716:59 b.txt
复制/etc/passwd文件到/mnt目录下,使用 touch –a 修改文件passwd的存取时间
[root@localhost mnt]# cp -a /etc/passwd .
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2016-11-07 18:36:43.441999782 +0800
Modify: 2016-10-21 18:15:07.082976185 +0800
Change: 2016-11-07 17:03:09.395040011 +0800
Birth: -
[root@localhost mnt]# touch -a passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2016-11-07 17:04:09.175035587 +0800
Modify: 2016-10-21 18:15:07.082976185 +0800
Change: 2016-11-07 17:04:09.175035587 +0800
Birth: -
使用touch –d 修改文件passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2016-11-07 17:04:09.175035587 +0800
Modify: 2016-10-21 18:15:07.082976185 +0800
Change: 2016-11-07 17:04:09.175035587 +0800
Birth: -
[root@localhost mnt]# touch -d2018-10-12 passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2018-10-12 00:00:00.000000000 +0800
Modify: 2018-10-12 00:00:00.000000000 +0800
Change: 2016-11-07 17:04:35.739033621 +0800
Birth: -
使用touch –m 修改文件passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2018-10-12 00:00:00.000000000 +0800
Modify: 2018-10-12 00:00:00.000000000 +0800
Change: 2016-11-07 17:04:35.739033621 +0800
Birth: -
[root@localhost mnt]# touch -m passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2018-10-12 00:00:00.000000000 +0800
Modify: 2016-11-07 17:05:07.385031279 +0800
Change: 2016-11-07 17:05:07.385031279 +0800
Birth: -
使用touch –r修改文件passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2018-10-12 00:00:00.000000000 +0800
Modify: 2016-11-07 17:05:07.385031279 +0800
Change: 2016-11-07 17:05:07.385031279 +0800
Birth: -
[root@localhost mnt]# touch -r /etc/passwdpasswd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2016-11-07 18:36:43.441999782 +0800
Modify: 2016-10-21 18:15:07.082976185 +0800
Change: 2016-11-07 17:06:45.478024019 +0800
Birth: -
[root@localhost mnt]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:19973395 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2016-11-07 18:36:43.441999782 +0800
Modify: 2016-10-21 18:15:07.082976185 +0800
Change: 2016-10-21 18:15:07.084976185 +0800
Birth: -
使用touch –t修改文件passwd
[root@localhost mnt]# touch -t201912221344.42 passwd
[root@localhost mnt]# stat passwd
File: ‘passwd’
Size: 2264 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode:4558657 Links: 1
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid: ( 0/ root)
Access: 2019-12-22 13:44:42.000000000 +0800
Modify: 2019-12-22 13:44:42.000000000 +0800
Change: 2016-11-07 17:18:55.136970019 +0800
Birth: -
◆Time 使用指定时间而不是当前时间。Time 变量以十进制形[[CC]YY]MMDDhhmm[.SS] 指定
cp
格式:cp [-abdfilpPrRsuv] [源文件列表] [目的文件列表]
作用:将一个或多个源文件或者目录复制到指定的目的文件或目录
参数选项:
r -a:此参数的效果和同时指定"-dpR"参数相同
r -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
r -f:强行复制文件或目录,不论目标文件或目录是否已存在
r -i:覆盖既有文件之前先询问用户
r -l:对源文件建立硬连接,而非复制文件
r -p:保留源文件或目录的属性
r -R/r:递归处理,将指定目录下的所有文件与子目录一并处理
r -s:对源文件建立符号连接,而非复制文件
r -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时才复制文件
r -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀
r -b:覆盖已存在的文件目标前将目标文件备份
r -v:详细显示命令执行的操作
示例一:复制文件
[root@vhxct67test ~]# touch test.txt //创建一个测试文件
[root@vhxct67test ~]# cp test.txt /mnt //把test.txt文件复制到/mnt目录下
[root@vhxct67test ~]# ll /mnt //在/mnt目录下查看复制的文件
total8
drwx------.2 root root 4096 Aug 2 04:34 hgfs
-rw------- 1 root root 2122 Nov 22 03:17 passwd
-rw------- 1 root root 0 Nov 24 03:14 test.txt
示例二:递归方式复制目录下的文件
[root@vhxct67test ~]#mkdir -p /cptest/a/c //创建测试目录
[root@vhxct67test ~]#touch /cptest/a/b.txt //在a目录下创建测试文件
[root@vhxct67test ~]#touch /cptest/a/c/cc.txt //在b目录下创建测试文件
[root@vhxct67test ~]#cp -rf /cptest/ /mnt //使用rf参数递归的方式把cptest目录的所以文件和目录都复制到mnt下
[root@vhxct67test ~]#ll /mnt /查看mnt目录下的cptest目录是否复制成功
total12
drwx------ 3 root root 4096 Nov 24 03:22 cptest
drwx------.2 root root 4096 Aug 2 04:34 hgfs
-rw------- 1 root root 2122 Nov 22 03:17 passwd
-rw------- 1 root root 0 Nov 24 03:14 test.txt
[root@vhxct67test ~]# cd /mnt //进入mnt目录下
[root@vhxct67test mnt]# tree cptest/ //使用tree命令查看cptest目录下的文件和目录是否全部复制完成
cptest/
└── a
├── b.txt
└── c
└── cc.txt
mv
格式:mv [-bfiuv] [源文件列表] [目标文件]
作用:对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
选项:
r --backup=<备份模式>:若需覆盖文件,则覆盖前先行备份
r -b:当文件存在时,覆盖前,为其创建一个备份
r -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录
r -i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动.这样可以避免误将文件覆盖
r --strip-trailing-slashes:删除源文件中的斜杠“/”
r -S<后缀>:为备份文件指定后缀,而不使用默认的后缀
r --target-directory=<目录>:指定源文件要移动到目标目录
r -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作
示例一:移动文件
[root@vhxct67test1 ~]# touch test.txt
[root@vhxct67test1 ~]# mv test.txt /mnt
[root@vhxct67test1 ~]# ll /mnt
drwx------. 2 root root 4096 Aug 2 04:34 hgfs
-rw------- 1 root root 0 Nov 24 06:01 test.txt
示例二:文件改名
[root@vhxct67test1~]# touch test1.txt
[root@vhxct67test1~]# mv test1.txt /mnt/test11.txt
[root@vhxct67test1~]# ll /mnt
drwx------.2 root root 4096 Aug 2 04:34 hgfs
-rw------- 1 root root 0 Nov 24 06:03 test11.txt
-rw------- 1 root root 0 Nov 24 06:01 test.txt
示例三:移动多个文件到/mnt目录下
[root@vhxct67test1 ~]# touch test.txttest1.txt test2.txt
[root@vhxct67test1 ~]# mv test.txt test1.txttest2.txt /mnt/
[root@vhxct67test1 ~]# ll /mnt
drwx------.2 root root 4096 Aug 2 04:34 hgfs
-rw------- 1 root root 0 Nov 24 06:06 test1.txt
-rw------- 1 root root 0 Nov 24 06:06 test2.txt
-rw------- 1 root root 0 Nov 24 06:06 test.txt
示例四:将文件file1改名为file2,如果file2已经存在,则询问是否覆盖
[root@vhxct67test1 ~]# touch test.txt
[root@vhxct67test1 ~]# mv -i test.txt /mnt/
mv:overwrite `/mnt/test.txt'? y
示例五:目录的移动
[root@vhxct67test1 ~]# mkdir -p /test/a
[root@vhxct67test1 ~]# touch /test/test1.txt
[root@vhxct67test1 ~]# touch /test/a/aa.txt
[root@vhxct67test1 ~]# mv /test /mnt
[root@vhxct67test1 ~]# ll /mnt/test/
drwx------2 root root 4096 Nov 24 06:12 a
-rw-------1 root root 0 Nov 24 06:12 test1.txt
rm
格式:rm [-dfirv] [文件]
作用:删除一个目录中的一个或多个文件或目录
选项:
r -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录
r -f:强制删除文件或目录
r -i:删除已有文件或目录之前先询问用户
r -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理
r --preserve-root:不对根目录进行递归操作
r -v:显示指令的详细执行过程
示例一:删除指定文件
[root@vhxct67test1 ~]# cd /mnt
[root@vhxct67test1 mnt]# ls
hgfs test test1.txt test2.txt test.txt
[root@vhxct67test1 mnt]# rm test.txt
[root@vhxct67test1 mnt]# ls
hgfs test test1.txt test2.txt
示例二:删除文件显示运行时详细信息
[root@vhxct67test1 mnt]# rm -v test1.txt
removed`test1.txt'
[root@vhxct67test1 mnt]# ls
hgfs test test2.txt
示例三:交互模式下删除文件
[root@vhxct67test1 mnt]# ls
hgfs test test2.txt
[root@vhxct67test1 mnt]# rm -iv test2.txt
rm:remove regular empty file `test2.txt'? y
removed`test2.txt'
示例四:递归删除某个目录下的文件和子目录
[root@vhxct67test1 mnt]# ls
hgfs test
[root@vhxct67test1 mnt]# tree test
test
├── a
│ └── aa.txt
└── test1.txt
1directory, 2 files
[root@vhxct67test1 mnt]# rm -rf test/
[root@vhxct67test1 mnt]# ls
hgfs
ln
格式:ln [-bdfinsv] [源文件列表] [目标文件]
作用:为文件创建连接,连接类型分为硬链接和软连接(符号链接)两种,默认是硬链接,如果要创建软连接必须使用“-s”选项
选项:
r -b或--backup:删除,覆盖目标文件之前的备份
r -d或-F或——directory:建立目录的硬连接
r -f或——force:强行建立文件或目录的连接,不论文件或目录是否存在
r -i或——interactive:覆盖既有文件之前先询问用户
r -n或--no-dereference:把符号连接的目的目录视为一般文件
r -s或——symbolic:对源文件建立符号连接,而非硬连接
r -S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它
r -v或——verbose:显示指令执行过程
r -V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串
示例一:硬链接
将/test/a.txt的文件链接到/mnt下
[root@vhxct67test1 ~]# mkdir /test
[root@vhxct67test1 ~]# touch /test/a.txt
[root@vhxct67test1 ~]# ll /mnt
total4
drwx------.2 root root 4096 Aug 2 04:34 hgfs
[root@vhxct67test1 ~]# ln /test/a.txt /mnt
[root@vhxct67test1 ~]# ll /mnt
total4
-rw------- 2 root root 0 Nov 24 08:06 a.txt
drwx------.2 root root 4096 Aug 2 04:34 hgfs
示例一说明:在执行ln命令之前,目录mnt中是不存在a.txt文件的,在执行ln命令后,目录mnt下才有a.txt这个文件,(注意,二者在物理上是同一文件)。
示例二:软链接
[root@vhxct67test1 ~]# touch /test/b.txt
[root@vhxct67test1 ~]# ln -s /test/b.txt /mnt
[root@vhxct67test1 ~]# ll /mnt
total4
-rw------- 2 root root 0 Nov 24 08:06 a.txt
lrwxrwxrwx 1 root root 11 Nov 24 08:13 b.txt -> /test/b.txt
drwx------.2 root root 4096 Aug 2 04:34 hgfs
find
格式:find [选项] [参数]
作用:在指定目录下查找文件
选项:
r -daystart:从本日开始计算时间
r -mtime -n ,+n按文件更改时间来查找文件,-n指n天以内,+n指n天以前
r -atime -n ,+n按文件访问时间来查, -n指n天以内,+n指n天以前
r -ctime -n ,+n按文件创建时间来查找文件,-n指n天以内,+n指n天以前
r -depth:从指定目录下最深层的子目录开始查找
r -expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录
r -exec<执行指令>:假设find 指令的回传值为True,就执行该指令
r -fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录
r -gid<群组识别码>:查找符合指定之群组识别码的文件或目录
r -group<群组名称>:查找符合指定之群组名称的文件或目录
r -inum:查找符合指定的inode编号的文件或目录
r -links<连接数目>:查找符合指定的硬连接数目的文件或目录
r -iname<范本样式>:指定字符串作为寻找符号连接的范本样式
r -ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出
r -maxdepth<目录层级>:设置最大目录层级
r -mindepth<目录层级>:设置最小目录层级
r name<范本样式>:指定字符串作为寻找文件或目录的范本样式
r -newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录
r -nouser:找出不属于本地主机用户识别码的文件或目录
r -path<范本样式>:指定字符串作为寻找目录的范本样式
r -perm<权限数值>:查找符合指定的权限数值的文件或目录
r -print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行
r -size<文件大小>:查找符合指定的文件大小的文件
r -true:将find指令的回传值皆设为True
r -typ<文件类型>:只寻找符合指定的文件类型的文件
r -uid<用户识别码>:查找符合指定的用户识别码的文件或目录
r -used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算
r -user<拥有者名称>:查找符和指定的拥有者名称的文件或目录
r -xdev:将范围局限在先行的文件系统中
示例一:查找指定时间内修改过的文件
[root@vhxct67test1 ~]# find -atime -2
./Music
./Templates
./.bashrc
./Downloads
./.gvfs
./.bash_profile
示例二:根据关键字查找
[root@vhxct67test1 ~]# find -name"*.log"
./.imsettings.log
./.local/share/gvfs-metadata/home-36bb4135.log
./.local/share/gvfs-metadata/label-VMware\x20Tools-4078a08d.log
./install.log
示例三:按照目录或文件的权限来查找文件
[root@vhxct67test1 ~]# find /opt/ -perm 644
/opt/glibc-2.14/etc/ld.so.cache
/opt/glibc-2.14/etc/rpc
/opt/glibc-2.14/lib/librpcsvc.a
/opt/glibc-2.14/lib/crtn.o
/opt/glibc-2.14/lib/librt.a
/opt/glibc-2.14/lib/gconv/gconv-modules
/opt/glibc-2.14/lib/libc_nonshared.a
/opt/glibc-2.14/lib/libutil.a
示例四:按类型查找
[root@vhxct67test1 ~]# find -type f -name"*.log"
./.imsettings.log
./.local/share/gvfs-metadata/home-36bb4135.log
./.local/share/gvfs-metadata/label-VMware\x20Tools-4078a08d.log
./install.log
示例五:按大小查找文件
[root@vhxct67test1 ~]# find -size +10M -print
./Desktop/VMwareTools-9.4.15-2827462.tar.gz
示例六:在/mnt目录中查找文件并使用-exec选项删除它
[root@vhxct67test1 ~]# cd /mnt
[root@vhxct67test1 mnt]# ls
a.txt b.txt hgfs
[root@vhxct67test1 mnt]# cd
[root@vhxct67test1 ~]# find /mnt -name a.txt-exec rm -rf {} \; //注意{}和\;之间有空格
[root@vhxct67test1 ~]# ll /mnt
total4
lrwxrwxrwx 1 root root 11 Nov 24 08:13 b.txt -> /test/b.txt
drwx------.2 root root 4096 Aug 2 04:34 hgfs
rename
语法:rename from to file
rename-V
作用:重命名文件
将a.txt,b.txt, c.txt批量修改为a.log,b.log,c.log
[root@xuegod66 rename]# touch a.txt b.txtc.txt
[root@xuegod66 rename]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 16 21:39 a.txt
-rw-r--r--. 1 root root 0 Nov 16 21:34 b.txt
-rw-r--r--. 1 root root 0 Nov 16 21:34 c.txt
[root@xuegod66 rename]# rename .txt .log*.txt
[root@xuegod66 rename]# ll -a
total 8
drwxr-xr-x. 2 root root 4096 Nov 16 21:39 .
drwxrwxrwt. 4 root root 4096 Nov 16 21:35 ..
-rw-r--r--. 1 root root 0 Nov 16 21:39 a.log
-rw-r--r--. 1 root root 0 Nov 16 21:34 b.log
-rw-r--r--. 1 root root 0 Nov 16 21:34 c.log
示例2:查看版本
[root@xuegod66rename]# rename -V
rename(util-linux-ng 2.17.2)
cat
格式:cat (选项) (参数)
作用:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。
选项:
r-n或-number:有1开始对所有输出的行数编号;
r-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
r-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
r-A:显示不可打印字符,行尾显示“$”;
r-e:等价于"-vE"选项;
r-t:等价于"-vT"选项;
参数:指定要连接的文件列表
显示文件内容行号
[root@xuegod66 cat]# cat -n abc.txt
1 abc
2 def
3 aaaaaa
4 dddddd
5 bbbbbb
6 eee
查看两个文件内容
[root@redhat01 cat]# ll
total 8
-rw-r--r--. 1 root root 26 Oct 30 20:10 a.txt
-rw-r--r--. 1 root root 17 Oct 30 20:11 b.txt
[root@redhat01 cat]#
[root@redhat01 cat]# cat a.txt b.txt
kdjflaj
kfjdlafj
kkkkkkk
999999
00000
122
显示不可打印的字符
[root@redhat01 cat]# cat -A a.txt
kdjflaj$
kfjdlafj$
kkkkkkk$
$
more
格式:more (选项)(参数)
作用:分页显示文本内容
选项:
r-<数字>:指定每屏显示的行数;
r-d:显示“[press space to continue,'q' to quit.]”和“[Press'h' for instructions]”;
r-c:不进行滚屏操作。每次刷新这个屏幕;
r-s:将多个空行压缩成一行显示;
r-u:禁止下划线;
r+<数字>:从指定数字的行开始显示。
参数:
文件:指定分页显示内容的文件。
[root@redhat01 cat]# more a.txt
kdjflaj
kfjdlafj
kkkkkkk
more支持vi的很多选项,输入“?”就调出说明
[root@redhat01 tmp]# more event.sh
--More--(49%)
Most commands optionally preceded by integer argument k. Defaults in brackets.
Star (*) indicates argument becomes new default.
-------------------------------------------------------------------------------
<space> Display next k lines of text [currentscreen size]
z Displaynext k lines of text [current screen size]*
<return> Display next k lines of text [1]*
d or ctrl-D Scroll klines [current scroll size, initially 11]*
q or Q or <interrupt> Exitfrom more
s Skipforward k lines of text [1]
f Skipforward k screenfuls of text [1]
b or ctrl-B Skipbackwards k screenfuls of text [1]
' Go toplace where previous search started
= Displaycurrent line number
/<regular expression> Search for kth occurrence of regular expression [1]
n Search forkth occurrence of last r.e [1]
!<cmd> or :!<cmd> Execute <cmd> in a subshell
v Start up/usr/bin/vi at current line
ctrl-L Redrawscreen
:n Go to kthnext file [1]
:p Go to kthprevious file [1]
:f Displaycurrent file name and line number
. Repeatprevious command
-------------------------------------------------------------------------------
less
格式:less (选项) (参数)
作用:向前或向后浏览文件
选项:
r-e:文件内容显示完毕后,自动退出;
r-f:强制显示文件;
r-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
r-l:搜索时忽略大小写的差异;
r-N:每一行行首显示行号;
r-s:将连续多个空行压缩成一行显示;
r-S:在单行显示较长的内容,而不换行显示;
r-x<数字>:将TAB字符显示为指定个数的空格字符。
参数:
文件:指定要分屏显示内容的文件。
[root@redhat01 tmp]# less -N event.sh
1 if [ -e/var/opt/resmon/log/event.log ]; then
2 MONTH=`date | awk '{print$2}'`
3 if [ $MONTH = Jan ] ; then
4 sed -n '/Dec 25/,/Dec 31/p'/var/opt/resmon/log/event.log
5 sed -n '/Jan 1/,/Jan 26/p' /var/opt/resmon/log/event.log
cat more less的区别:
cat 连续显示、查看文件内容
more 分页查看文件内容
less 分页可控制查看文件内容
cat一次性把文件内容全部显示出来,不能进行交互式操作,适合察看内容短小、不超过一屏的文件;
more比cat强大一点,支持分页显示,支持ctrl+B ctrl+F .....上下滚屏,但是不支持像shift+g(跳到文件尾)这种操作;
less比more更强大一点,支持各种命令,随便翻页、跳转、查找.....
head
格式:mkdir (选项) (参数)
作用:文件内容查看用于显示文件的开头的内容
选项:
r-n 指定显示头部内容的行数
r-c 指定显示头部内容的字符数
r-v 总是显示文件名的头信息
r-q 不显示文件名的头信息
参数: 文件列表:指定显示头部内容的文件列表
示例:
在查看/etc/passwd用户文件的前十行内容
[root@localhost ~]# head –n 10 /etc/passwd
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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
tail
格式:tail (选项) (参数)
作用:从指定点开始将文件写到标准输出
选项:
r-retry: 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
r-c或--bytes=:输出文件尾部的N(N为整数)个字节内容;
r-f或;--follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
r-F: 与选项“-follow=name”和“--retry"连用时功能相同;
r-n或--line=: 输出文件的尾部N(N位数字)行内容。
r--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
r-q或--quiet或--silent:当有多个文件参数时,不输出各个文件名;
r-s<秒数>或--sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
r-v或--verbose:当有多个文件参数时,总是输出各个文件名;
r--help: 显示指令的帮助信息;
r--version: 显示指令的版本信息。
参数:
文件列表:指定要显示尾部内容的文件列表。
示例:
在/home下创建test目录,设置权限为644
[root@localhost ~]# tail -n 5 /etc/passwd
sshd:x:74:74:Privilege-separatedSSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
rget1:x:500:500::/home/rget1:/bin/bash
rput1:x:501:501::/home/rput1:/bin/bash
apache:x:48:48:Apache:/var/www:/sbin/nologin[root@localhost ~]# mkdir -m 644 /home/test
[root@localhost log]# tail -f fail2ban.log 可以实时监控日志
2016-11-1717:46:32,773 fail2ban.database [1209]: INFO Connected tofail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2016-11-1717:57:28,130 fail2ban.server [1209]: INFO Stopping all jails
2016-11-1717:57:28,130 fail2ban.server [1209]: INFO Exiting Fail2ban
2016-11-1806:45:54,509 fail2ban.server [1215]: INFO Changed loggingtarget to /var/log/fail2ban.log for Fail2ban v0.9.4
2016-11-1806:45:54,538 fail2ban.database [1215]: INFO Connected tofail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
cut
格式:cut (选项) (参数)
作用:用来显示行中的指定部分,删除文件中指定字段
选项:
r-b:仅显示行中指定直接范围的内容;
r-c:仅显示行中指定范围的字符;
r-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
r-f:显示指定字段的内容;
r-n:与“-b”选项连用,不分割多字节字符;
r--complement:补足被选择的字节、字符或字段;
r--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
r--help:显示指令的帮助信息;
r--version:显示指令的版本信息。
参数:
文件:指定要进行内容过滤的文件。
示例:
例如有一个学生报表信息,包含No、Name、Mark、Percent:
[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 80 91
02 jack3 81 87
03 alex 68 98
使用 -f 选项提取指定字段:
[root@localhost text]# cut -f 1 test.txt
No
01
02
03
[root@localhost text]# cut -f2,3 test.txt
NameMark
tom 80
jack 81
alex 68
使用 -d 选项指定字段分隔符:
[root@localhost text]# cut -f2 -d";" test2.txt
Name
tom
jack
alex
paste
格式:paste (选项) (参数)
作用:用于将多个文件按照列队列进行合并
选项:
r-d<间隔字符>或--delimiters=<间隔字符>:用指定的间隔字符取代跳格字符;
r-s或——serial串列进行而非平行处理。
参数:
文件列表:指定需要合并的文件列表
示例:
[root@localhost ~]# cat per1
1
2
3
4
[root@localhost ~]# cat per2
a
b
c
d
[root@localhost ~]# paste per1 per2
1 a
2 b
3 c
4 d
[root@localhost ~]# paste per1 per2
1 2 3 4
a b c d
[root@localhost ~]# ls | paste -d: - - - #用:分隔,且每行显示三个文件
anaconda-ks.cfg:a.txt:a.txxt
fail2ban-0.9.4:fail2ban-0.9.4.tar.gz:inotify.sh
inotify-tools-3.13.tar.gz:install.log:install.log.syslog
per1:per2:xuegod63
sort
格式:sort (选项) (参数)
作用:sort在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
选项:
r-b: 忽略每行前面开始出的空格字符;
r-c: 检查文件是否已经按照顺序排序;
r-d: 排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
r-f: 排序时,将小写字母视为大写字母;
r-i: 排序时,除了040至176之间的ASCII字符外,忽略其他的字符;
r-m:将几个排序号的文件进行合并;
r-M:将前面3个字母依照月份的缩写进行排序;
r-n: 依照数值的大小排序;
r-o<输出文件>:将排序后的结果存入制定的文件;
r-r:以相反的顺序来排序;
r-t<分隔字符>:指定排序时所用的栏位分隔字符;
r+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
参数:
文件:指定待排序的文件列表
示例:
sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
[root@localhost ~]# cat sort.txt
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@localhost ~]# sort sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5
忽略相同行使用-u选项或者uniq:
[root@localhost ~]#sort -u sort.txt
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
sort的-n、-r、-k、-t选项的使用:
[root@localhost ~]#cat sort.txt
AAA:BB:CC
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
将BB列按照数字从小到大顺序排列:
[root@localhost ~]# sort -nk 2 -t: sort.txt
AAA:BB:CC
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5
将CC列数字从大到小顺序排列:
[root@localhost ~]# sort -nk 2 -t: sort.txt
eee:50:5.5
eee:50:5.5
ddd:40:4.4
ccc:30:3.3
bbb:20:2.2
aaa:10:1.1
AAA:BB:CC
uniq
格式:uniq (选项) (参数)
作用:uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用
选项:
r -m 设置文件夹权限
r-c或——count:在每列旁边显示该行重复出现的次数;
r-d或--repeated:仅显示重复出现的行列;
r-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
r-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
r-u或——unique:仅显示出一次的行列;
r-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
参数:
输入文件:指定要去除的重复行文件。如果不指定此项,则从标准读取数据;
输出文件:指定要去除重复行后的内容要写入的输出文件。如果不指定此选项,
则将内容显示到标准输出设备(显示终端)。
示例:
删除重复行:
[root@localhost~]#cat file.txt
AAA
aaa
AAA
aaa
BBB
bbb
BBB
bbb
[root@localhost ~]# sort file.txt | uniq
aaa
AAA
bbb
BBB
统计各行在文件中出现的次数:
[root@localhost ~]#sort file.txt | uniq –c
2aaa
2AAA
2bbb
2BBB
在文件中找出重复的行:
[root@localhost ~]#sort file.txt| uniq -d
aaa
AAA
bbb
BBB
wc
作用:
wc命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。对每个文件输出行、单词、和字节统计数,如果指定了多于一个文件则还有一个行数的总计。没有指定文件或指定的文件是名为“-”,则读取标准输入。
wc命令类似与word中的字数统计功能,可以统计字数、行数、页数、段落等。
格式:
wc [选项列表]... [文件名列表]...
wc [-clw][--help][--version][文件...]
参数:
r-c, --bytes, --chars 输出字节统计数。
r-l, --lines 输出换行符统计数。
r-L, --max-line-length 输出最长的行的长度。
r-w, --words 输出单词统计数。
r--help 显示帮助并退出
r--version 输出版本信息并退出
示例:
[root@sail ~]# wc /etc/passwd
43 87 2267 /etc/passwd
第一列显示行数,第二列显示单词数,第三列显示字节数、第四列为文件名。
表示文件有43行、表示文件中有87个单词、2267表示文件字节数即文件的大小.
[root@sail ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2267 Oct 23 01:26 /etc/passwd
[root@sail ~]# ls -lh /etc/passwd
-rw-r--r--. 1 root root 2.3K Oct 23 01:26 /etc/passwd
[root@sail test]# wc -l /etc/passwd 统计行数
43 /etc/passwd
[root@sail test]# wc -w /etc/passwd 统计单词数
87 /etc/passwd
[root@sail test]# wc -c /etc/passwd 统计字节数
2267 /etc/passwd
[root@sail test]# wc -m /etc/passwd 统计字符数
2267 /etc/passwd
[root@sail test]# wc -L /etc/passwd 统计文件中最长行的长度(包含空格)
99 /etc/passwd
tss:x:59:59:Account used by the trousers package tosandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@sail test]# ls –l
-rw-r--r--. 1 root root 2267 Nov 8 21:23 passwd
-rw-r--r--. 1 root root 2267 Nov 8 21:23 passwd2
-rw-r--r--. 1 root root 2267 Nov 8 21:23 passwd3
上面3个测试文件其同样的内容。
[root@sail test]# wc -clw passwd passwd2passwd3
43 87 2267 passwd
43 87 2267 passwd2
43 87 2267 passwd3
129 261 6801 total
多个文件一起统计时,按行显示每个文件的信息,输出结果最后一行就是将多个文件的统计结果汇总。
iconv
作用:
对于给定文件把它的内容从一种编码转换成另一种编码。iconv程序把文本 从一种编码转换为另一种编码,更准确一点,他是把-f 指定的编码转换为-t指定的编码。这两种编码默认都是当前locale的编码, 所有inputfile 都依次 进行转换。如果没有指定 inputfile 则使用标准输入. 转换后的内容会输出到 标准输出。
格式:
iconv[-f encoding] [-t encoding] [inputfile ...]
参数:
r-f encoding 把字符从encoding编码开始转换。
r-t encoding :把字符转换到encoding编码。
r-l 列出已知的编码字符集合 。
r-o file指定输出文件 。
r-c 忽略输出的非法字符 。
r-s 禁止警告信息,但不是错误信息 。
r--verbose 显示进度信息 。
r-f和-t所能指定的合法字符在-l选项的命令里面都列出来了。
示例:
在windos用记事本编写的脚本文件,上传到linux服务器之后,经常会出现乱码,无法执行。而linux服务器上产生的脚本文件导出到windows常常也会发生乱码。乱码出现的原因就是linux和windows的编码不一致所产生的,可以使用iconv将文件转码输出成适合各自系统编码的文件,就不会出现乱码。
[root@sail ~]# rpm -qf `which iconv` #查看工具是否安装
glibc-common-2.17-105.el7.x86_64
如果没安装可以使用yum install –y glibc-common进行安装。
[root@sail ~]# iconv -l |grep GB
CN-GB//
CSGB2312//
CSISO58GB1988//
EBCDIC-CP-GB//
GB//
GB2312//
GB13000//
GB18030//
GBK//
GB_1988-80//
GB_198880//
ISO646-GB//
[root@sail ~]# iconv -l |grep UTF
ISO-10646/UTF-8/
ISO-10646/UTF8/
UTF-7//
UTF-8//
UTF-16//
UTF-16BE//
UTF-16LE//
UTF-32//
UTF-32BE//
UTF-32LE//
UTF7//
UTF8//
UTF16//
UTF16BE//
UTF16LE//
UTF32//
UTF32BE//
UTF32LE//
在windows上编写一个记事本文件内容如下,上传到linux服务器:
windows上的文件,上传到linux服务器,出现乱码。
原因是:windows和linux系统使用的编码不一致导致的。
解决方案:使用iconv转码工具,转化成适合系统的编码,再次查看文件就不会出现乱码了。
[root@sail ~]# ls -lt
-rw-r--r--. 1 root root 181 11月 8 22:02 biamma.txt
[root@sail ~]# cat biamma.txt #用cat查看文件内容显示乱码如下
windowsʏµŎļþ£¬ʏ´«µ½linux·þϱǷ£¬³