菜鸟教程命令大全 http://www.runoob.com/linux/linux-command-manual.html
命令大全: http://man.linuxde.net/
tab :自动补全
Ctrl+l 清屏 (类似于clear命令)
Ctrl+U 清空当前输入
ctrl+c 关闭
man command 帮助
man :manual : 手工,帮助 ,帮助命令,好比windows help 命令: man ls
文件命名规则:
1)除了/都是合法的字符
2)有些字符最好不要用,像空格、制表符号、退格符和字符@#$%-等符号。(linux下面命令和参数之间用空格分割)
3)避免使用.作为普通文件的第一个字符 (linux下面以.开头的文件表示隐藏文件)
4)大小写敏感。(windows下面不区分大小写)
命令存在目录与权限关系: (可以用which ls查看ls存在的目录)
- 只有管理员可以运行的命令所在目录:
/sbin
/usr/sbin/
- 所有用户可以执行的命令存在目录:
/bin
/usr/bin
bin-binary 二进制文件,linux所有的文件都是二进制文件,是一个可执行的二进制文件
use -user
/sbin super binary
例如:查看chmod的路径与运行权限:
[root@iz2ze46xi6pjjj69ailg9lz dir1]# which chmod /usr/bin/chmod [root@iz2ze46xi6pjjj69ailg9lz dir1]# ll /usr/bin/chmod -rwxr-xr-x. 1 root root 58584 Nov 6 2016 /usr/bin/chmod
也可以通过chmod改变其运行权限
命令格式:
命令 -选项 参数 (选项代表以什么形式展示,参数代表针对谁操作)
例子: ls -la /etc
说明:1)当有多个选项的时候可以写在一起
2)两个特殊的目录.和..分别代表当前目录和当前目录的父目录。~代表用户工作目录,/代表根目录
-----------------------------------基本管理命令--------------------------
1.who与whoami,whois与w与id与groups
[root@VM_0_12_centos ~]# who #查看当前在线用户 qlq pts/0 2018-03-28 19:47 (218.26.179.150) root pts/1 2018-03-28 19:46 (218.26.179.150) [root@VM_0_12_centos ~]# w #查看活动用户 19:49:07 up 8 days, 10:30, 2 users, load average: 0.00, 0.02, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT qlq pts/0 218.26.179.150 19:47 1:23 0.01s 0.01s -bash root pts/1 218.26.179.150 19:46 3.00s 0.01s 0.00s w [root@VM_0_12_centos ~]# whoami #查看我是谁 root [root@VM_0_12_centos ~]# id #查看当前用户的组信息 uid=0(root) gid=0(root) groups=0(root)
whois查询域名信息
[root@VM_0_12_centos ~]# whois qiaoliqiang.cn Domain Name: qiaoliqiang.cn ROID: 20170902s10001s95633482-cn Domain Status: ok Registrant ID: hc2862611690203 Registrant: 乔利强 Registrant Contact Email: 954318444253555555508@qq.com Sponsoring Registrar: 阿里云计算有限公司(万网) Name Server: dns31.hichina.com Name Server: dns32.hichina.com Registration Time: 2017-09-02 08:22:50 Expiration Time: 2018-09-02 08:22:50 DNSSEC: unsigned
查看一个用户属于哪个组:
[root@iz2ze46xi6pjjj69ailg9lz ~]# groups qlq #查看qlq属于哪个组 qlq : qlq mygroup
或者:
[root@iz2ze46xi6pjjj69ailg9lz ~]# id qlq #查看qlq用户的UID和组信息 uid=1000(qlq) gid=1000(qlq) groups=1000(qlq),888(mygroup)
groups和id如果不加后面的参数默认查询当前用户的组信息。
2:显示“$”标识表示是普通用户, 显示“#”标识表示是超级管理员
例如: 进入linux系统,控制台出现:itcast@ubuntu:~$
~用户的根目录
3:切换用户与设置密码
- 切换用户(使用 su 命令切换用户):
当从普通用户切换到root用户(超级管理员)或其他用户时,需要输入目标用户的密码。
当从root用户切换到普通用户时,不需要输入密码。
[root@VM_0_12_centos ~]# su qlq [qlq@VM_0_12_centos root]$ su root Password: [root@VM_0_12_centos ~]#
直接su环境变量以及目录不会改变,su - username会改变用户的环境变量与工作目录:
[root@localhost ~]# su - hadoop [hadoop@localhost ~]$ pwd /home/hadoop
- 修改用户密码 passwd username 修改用户密码(只有root有权限)
[root@VM_0_12_centos qlq]# passwd qlq Changing password for user qlq. New password: BAD PASSWORD: The password is shorter than 7 characters Retype new password: passwd: all authentication tokens updated successfully.
- 修改组密码 gpasswd grpname(修改组的密码)
1.注销、关机、重启
- 注销 :logout :登出 、exit (只是退出账号)
- 关机 :(需要成为rwwwt用户或者被rwwwt授予权限)
shutdown - h 时间
- h :关机
- 时间 :
1. now :马上
2. 12.30 :指定具体时间
3. 3 :几分钟以后
sudo : superuser do :由超级用户来执行该命令
要配置sudo 命令 : 授权 哪些用户能执行哪些命令
由超级用户配置 sudo
/etc/sudoers
sudo shutdown -h now 当前账号:itcast
- 重启 :
reboot : 相当于重启服务器
shutdown -r 时间
-r :restart
---------------------------------------文件操作命令--------------------------------------------
1. ls : 查看目录内容 (ll是ls -l的别名 , alias ll可以查看别名)
英文名称:list
命令所在目录:
语法: ls 选项[-ald] 文件或目录
-a all,显示索引文件,包括隐藏文件。
-l long,显示详细信息
-d 查看目录属性
-i 查看inode(inode用于内核操作,每个文件都有一个inode)
例如:
ls -l
-rw-r--r-- 1 root root 14744393 Jan 27 13:50 exam.sql
1-此文件的硬连接数 所有者 所属组 文件大小 创建时间或最后修改时间 文件或目录名称
解释:
(1)-rw-r--r--代表文件的类型与权限
首位代表文件类型: d 目录
- 二进制文件
l 软连接文件,link
接下来每三个是一组,依次代表所有者、所属组、其他人对此文件权限,代表文件的权限依次是:r-read(4) w-write(2) x-execute(1) -:代表没权限(0)
所有者:u user
g group
o others
a 所有人
关于ls排序问题:
(1)默认按照文件名称排序(正序排序),-h 文件大小以人类能看懂的形式展示,单位是M、K
-t 将文件的修改时间排序,最新的在前面。
-S 根据文件大小降序排序,最大的在前面。
(2)如果需要相反的排序可以用-r参数:或者结合tac命令实现反向输出
-r 将文件以相反次序显示(原定依英文字母次序)。
例如:
1》按照时间升序排序
ls -hltr
或者:
ls -lht | tac
2》按文件大小排序
ls -hlS #按大小降序 ls -hlS | tac #按大小升序 ls -lhSr #按大小升序
2. mkdir :创建目录
Desktop:
- java
- JEE : aa.txt bb.txt
- Android
3. cd 切换目录
cd .. 回到上级目录
cd ./java 进入当前目录的子目录
cd ../xxx 进入上一级目录的子目录
cd ~ 进入用户自己的工作目录
cd 什么也不写默认进入当前用户的主目录
4. touch :创建一个空白的普通文件
touch aa.txt
5. echo :把内容重定向到指定的文件中 ,有则打开,无则创建
echo "content">bb.txt (有时候我们不希望错误信息打印出来可以重定向到/dev/null 会自动回收这些信息)
/dev/null 是 Unix/Linux 里的【无底洞】
任何的 output 送去了【无底洞】就再也没了。相信我,真的没了!
那麼有人问,在什麼情况下要把 output 送去这无底洞呢?
这里没有标准答案,
不过一般呢,要是你不想看到 output 或者output 太多太大了,有可能把硬碟给挤爆了的时候,程序的设计就会考虑把 output 送到 /dev/null 了。
6. cat、more、less :查看文件内容
(1) cat :查看文件内容(适用于查看内容比较少的文件,只能显示最后一页的文件)
cat test.txt
(2)more: 分页显示文件内容
more ./catalina.out
空格或者f显示下一页
Enter显示下一行
q或者Q退出more的浏览状态
(3)less 分页显示文本文件内容
1:空格 向下翻一页
2:PageDown 向下翻一页
3:PageUp 向上翻一页
4.Enter显示下一行
5:q 离开
7. head,tail,sed分别显示文件开头和结尾内容和按指定行显示内容
- head:查看文件制定前多少行
例如查看文件前20行:
head -n 20 xxx.txt 或者 head -20 xxx.txt
- tail:制定最后多少行与实时查看
查看文件前20行
tail -n 20 xxx.txt 或者 tail -20 xxx.txt
实时查看日志问:
tail -f xxx.log
- sed:查看指定的行数
查看文件中间一段,你可以使用sed命令,如:
sed -n '8,9p' catalina.2018-03-15.log
这样你就可以只查看文件的第5行到第10行。
8. cp、mv、rm 复制、移动、删除文件
- cp :复制
复制文件:将bj.txt复制到当前目录/java/jee目录下
cp bj.txt ./java/jee
复制文件加-R参数:将/etc目录整体复制到/test目录下
[root@iz2ze46xi6pjjj69ailg9lz test]# cp -R /etc /test [root@iz2ze46xi6pjjj69ailg9lz test]# ls /test/ etc test1 test.sh
- mv : 移动、重命名(移动)
(1)移动: 将当前目录下的test.txt移动到当前目录下mydir,名字也是test.txt
[root@iz2ze46xi6pjjj69ailg9lz ~]# mv ./test.txt ./mydir/ [root@iz2ze46xi6pjjj69ailg9lz ~]# ls mydir/ test.txt
(2)移动并且重命名:将当前目录下的exam1.31.sql 移动打 mydir目录下且重命名为exam.sql
[root@iz2ze46xi6pjjj69ailg9lz ~]# mv ./exam1.31.sql ./mydir/exam.sql [root@iz2ze46xi6pjjj69ailg9lz ~]# ls ./mydir/ exam.sql test.txt
(3)重命名: 假如移动的文件存放在同一个目录中 ,则是重命名
mv bb.txt cc.txt
- rm :删除文件或者文件夹
删除文件:直接 rm ww.text 删除目录: rm -rf ww
-f : 假如要删除的文件不存在,也不提示
-i : 删除前提示 ,默认不删除,要删除,输入y
-d : 删除空白目录
-r :递归删除
9. wc :word count :统计字符数
wc [选项] [文件名称]
-c 统计毕byte数
-m 统计characters数
-l 统计行数
-w words数量
[root@VM_0_12_centos ~]# wc -c /etc/services 670293 /etc/services [root@VM_0_12_centos ~]# wc -m /etc/services 670281 /etc/services [root@VM_0_12_centos ~]# wc -l /etc/services 11176 /etc/services [root@VM_0_12_centos ~]# wc /etc/services 11176 61033 670293 /etc/services
linux统计文件个数:
ls -l | grep "^-" | wc -l
统计当前目录下文件的个数(包括子目录)
ls -lR| grep "^-" | wc -l
查看某目录下文件夹(目录)的个数(包括子目录)
ls -lR | grep "^d" | wc -l
10. ln :创建连接文件
硬连接相当与源文件的一个复制,只是会同步更新,删除原文件不会影响硬连接;软连接相当于windows的快捷方式,访问软连接实际是访问源文件,删除源文件则软连接相当于没有用了。
(1)硬连接:类似于cp 只是两个文件会同步(文件内容更新同步,删除的时候不会影响硬连接,硬链接是有着相同 inode 号仅文件名不同的文件(每个文件都有一个inode,i节点用于内核操作))
- 默认创建的是硬连接,好比复制 ,但是两个文件会同步
命令:ln ./java/android/aa.txt aaa
例如创建一个硬连接并查看其inode发现硬连接与源文件有着相同的inode,因此可以实现同步
[root@iz2ze46xi6pjjj69ailg9lz ~]# ln test ./test.li [root@iz2ze46xi6pjjj69ailg9lz ~]# ls -li|grep test 132542 -rw-r--r-- 2 root root 40 Sep 1 2017 test 132542 -rw-r--r-- 2 root root 40 Sep 1 2017 test.li
注意:
硬链接不允许跨分区.(也就是假如windows允许硬链接,不允许将C盘的东西硬链接到D盘,实际windows不存在硬链接)
(2)软连接:
- s :创建的是软连接变为指向(类似于windows的快捷方式,执行快捷方式实际是执行原文件)
软连接的文件类型是l,权限是所有人可以读写执行,其实操作软连接的时候还是会去操作其源文件。类似于windows 的快捷方式,我们点击快捷方式的时候还是会去执行源文件,因此快捷方式也很小,执行的时候实际是去执行源文件。源文件删除之后,软连接没有任何意义。文件类型是l(link),箭头指向源文件。可以跨分区实现软连接。
例如:
qq.sh
num=3 #!/bin/bash case $num in 1) echo "num=1";; 2) echo "num=2";; 3) echo "num=3";; 4) echo "num=4";; *) echo "defaul";; esac
赋予可运行权限:
chmod +x qq.sh
创建一个目录ww,并在ww目录创建一个可运行文件qq.sh的硬连接并运行:
[rwwwt@iz2ze46xi6pjjj ~]# mkdir ww [rwwwt@iz2ze46xi6pjjj ~]# cd ww [rwwwt@iz2ze46xi6pjjj ww]# ls [rwwwt@iz2ze46xi6pjjj ww]# ln ../qq.sh qq [rwwwt@iz2ze46xi6pjjj ww]# ls qq [rwwwt@iz2ze46xi6pjjj69ailg9lz ww]# ./qq num=3
11. pwd :查看当前目录的绝对路径
英文名称: print working directory
12. 管道命令 | (前一个命令的结果作为后一个命令的输入)
命令: ls -la | wc
13. 重定向(添加文本内容)
- > :覆盖模式
命令: echo "ww">aaa
- >>:追加模式
命令: echo "ww">>aaa
--------------------------------------------文件权限相关命令--------------------------
1. chmod 改变文件或目录
change the permissions mode of a file
语法:
chmod [{ugo}{+-=}{rwx}] [文件或者目录]
[mode=421] [文件或者目录]
用户类型:u g o a 分别表示所属用户,所属组用户,其他用户,所有用户
+-=:分别表示 增加、删除、将权限设为。。。。
rwx-:分别代表读、写、可运行、没权限
权限的数字表示法:(每三个一组,r为4,w为2,x为1,-为0)
rwxr-xr-- 对应是数字权限: 754
641 rw-r----x
例如:
(1)创建一个文件:
touch test.txt
(2)查看文件权限:
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll | grep test.t -rw-r--r-- 1 root root 0 Mar 27 21:06 test.txt
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
r=读取属性 //值=4
w=写入属性 //值=2
x=执行属性 //值=1
- 没有权限 //值=0
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
(3)将文件的所有权限都收回:
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod a=- test.txt [root@iz2ze46xi6pjjj69ailg9lz ~]# ll | grep test.t ---------- 1 root root 0 Mar 27 21:06 test.txt
(4)赋予该文件属主读写权限,属组权限为读,其他用户为读
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod u+rw,g+r,o+r test.txt [root@iz2ze46xi6pjjj69ailg9lz ~]# ll | grep test.t -rw-r--r-- 1 root root 0 Mar 27 21:06 test.txt
(5) 利用数字表示权限以及设置权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll |grep Exam.war -rw-r--r-- 1 root root 213608341 Jan 27 22:19 Exam.war
上面的权限用数字法表示为:644
现在我们修改这个文件的权限为:所属主不变,所属组增加写权限,其他人增加可执行权限。
权限应为:rw- rw- r-x 对应的数字是:665
[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod 665 Exam.war [root@iz2ze46xi6pjjj69ailg9lz ~]# ll |grep Exam.war -rw-rw-r-x 1 root root 213608341 Jan 27 22:19 Exam.war
权限总结: (删除一个文件需要对当前文件所在的目录有写权限)
2.chown 改变文件或者目录的所有者:
change file ownership
语法:chown [用户] [文件或者目录]
如下:将mbedtls-2.6.0目录的所属主改为root
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll drwxrwxr-x 11 17608 17608 4096 Aug 22 2017 mbedtls-2.6.0 [root@iz2ze46xi6pjjj69ailg9lz ~]# chown root mbedtls-2.6.0 [root@iz2ze46xi6pjjj69ailg9lz ~]# ll drwxrwxr-x 11 root 17608 4096 Aug 22 2017 mbedtls-2.6.0
3.chgrp 改变文件或目录的所属组
change file group ownership
语法: chgrp [组名] [文件或目录]
例如:将mbedtls-2.6.0目录的所属组改为root
[root@iz2ze46xi6pjjj69ailg9lz ~]# chgrp root mbedtls-2.6.0 [root@iz2ze46xi6pjjj69ailg9lz ~]# ll|grep mbedtls-2.6.0 drwxrwxr-x 11 root root 4096 Aug 22 2017 mbedtls-2.6.0 -rw-r--r-- 1 root root 1958070 Mar 14 23:53 mbedtls-2.6.0-gpl.tgz
4.umask 显示、设置创建一个文件或者目录的默认权限:
语法: umask [-S]
-S以rwx形式显示文件或者目录的缺省权限
例如;
[root@iz2ze46xi6pjjj69ailg9lz ~]# umask 0022 [root@iz2ze46xi6pjjj69ailg9lz ~]# umask -S u=rwx,g=rx,o=rx
解释:
(1)0022是以数字形式显示缺省权限
0:权限特殊位
022:用户权限位,权限掩码值(类似于子网掩码)
777 - 022 = 755
也就是一个文件或者目录的缺省权限值是755(rwxr-xr-x)
验证:
创建一个目录并验证其缺省权限:(确实是755)
[root@iz2ze46xi6pjjj69ailg9lz dir1]# mkdir test [root@iz2ze46xi6pjjj69ailg9lz dir1]# ll total 4 drwxr-xr-x 2 root root 4096 Mar 28 12:28 test
创建一个文件并且验证其缺省权限:
[root@iz2ze46xi6pjjj69ailg9lz dir1]# touch xxx.txt [root@iz2ze46xi6pjjj69ailg9lz dir1]# ls |grep xxx xxx.txt [root@iz2ze46xi6pjjj69ailg9lz dir1]# ll |grep xxx -rw-r--r-- 1 root root 0 Mar 28 12:29 xxx.txt
发现创建的文件缺省权限是:rw-r--r--(644),原因;
linux将创建文件的可执行权限x去掉了,可以是防止病毒,文件不能执行也就没啥用,因此文件的缺省权限是在755的基础上-111,也就是644
(2)修改缺省权限(一般是不需要改变的,默认的linux的所有权限值是755)
现在加入我们非要改变文件的缺省权限是750(rwxr-x---),设置的时候需要使用掩码值: 777-750=027
[root@iz2ze46xi6pjjj69ailg9lz dir1]# umask 027 [root@iz2ze46xi6pjjj69ailg9lz dir1]# umask 0027 [root@iz2ze46xi6pjjj69ailg9lz dir1]# umask -S u=rwx,g=rx,o=
进行测试:(文件也是默认将x权限去掉)
[root@iz2ze46xi6pjjj69ailg9lz dir1]# ll | grep ttt drwxr-x--- 2 root root 4096 Mar 28 12:35 tttt [root@iz2ze46xi6pjjj69ailg9lz dir1]# touch xxx.txt [root@iz2ze46xi6pjjj69ailg9lz dir1]# ll | grep xxx. -rw-r--r-- 1 root root 0 Mar 28 12:36 xxx.txt
关于linux下的s、t、i、a权限
------------------------------------文件与命令搜索常用命令------------------------------------------
1.which ,whereis 搜索命令所在绝对路径(显示系统命令所在目录)
语法 which [命令名称]
[root@iz2ze46xi6pjjj69ailg9lz dir1]# which ls alias ls='ls --color=auto' /usr/bin/ls
which可以提供这个命令的别名信息
语法 whereis [命令名称]
[root@iz2ze46xi6pjjj69ailg9lz dir1]# whereis chmod chmod: /usr/bin/chmod /usr/share/man/man1/chmod.1.gz
whereis可以提供这个命令的帮助信息
2.find 文件搜索命令:
语法: find [搜索路径] [搜寻关键字] 注意:搜索路径最好不要从根目录查找,太占内存。占用系统的资源越少越好。
连接符:
-a and 逻辑与
-o or 逻辑或
- -name 根据文件名进行查找
例如:
(1)在/root目录下查找xxx.txt文件
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name xxx.txt /root/dir1/xxx.txt
也可以使用通配符: * 任意n个字符 ?任意单个字符
(2)在/root目录下查找xxx.txt文件(使用*通配符)
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name xxx* /root/dir1/xxx.txt [root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name *xxx* /root/dir1/xxx.txt
(3)在/root目录下查找xxx.txt文件(使用?通配符)
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name xxx.tx? /root/dir1/xxx.txt
- -size 根据文件大小查找 block:数据块 512字节=0.5KB (数据块的概念可以理解为一个屋子放的是大沙发还是椅子,而坐的人就是数据,沙发和椅子就是数据块) 单位是KB
100MB=?block
100MB=102400KB=204800block
例如:/root目录下查找大于200M的文件 (小于用-,等于不用符号)
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -size +409600 /root/tomcat项目/exam电厂培训管理系统/Exam.war /root/Exam.war
在/root目录下查找文件大于80M小于100M的
find /root -size +163840 -a -size -204800
- -user 查找指定所有者的文件
例如:在/root/dir1/目录下查找所有者是root的文件
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root/dir1/ -user root /root/dir1/ /root/dir1/tttt /root/dir1/xxx.txt /root/dir1/test
- 按时间查询文件
1.按天查找 ctime atime mtime
2.按分钟查找 cmin amin mmin
c-change改变(表示文件的属性被修改,比如说所有者,所属组,权限)
a-acess访问 (被看过、浏览过)
m-modify (表示文件的内容被修改过)
-之内,+超过,不带符号表示时间值
例如:
查找120分钟内文件被改过的文件:
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root/ -mmin -120 /root/ /root/dir1 /root/dir1/tttt
- -type 根据文件类型查找
f file:文件
d directory 目录
l link 软连接
例如:查找所有的软连接:
find /root/ -type l
- 连接操作符: (重要)
(1)第一组: 连接符:
-a and 逻辑与
-o or 逻辑或
查看120分钟之内被修改过的文件:
find /root/ -amin -120 -a -type f
(2)-exec (也可以用-ok代替,-ok有询问功能) 查出文件并对结果执行一些额外操作
语法:find ..... -exec 命令 {} \;
{}表示find查询的结果
\转义符,符号命令本身使用的含义
; 结果
例如:查询一个以xxx开头的文件并显示其详细信息
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name xxx* -exec ls -l {} \; -rw-r--r-- 1 root root 221 Mar 28 13:02 /root/dir1/xxx.txt
用-ok的时候有询问过程:
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name xxx* -ok ls -l {} \; < ls ... /root/dir1/xxx.txt > ? y -rw-r--r-- 1 root root 221 Mar 28 13:02 /root/dir1/xxx.txt
例如:查询一个以xxx开头的文件并删除此文件
[root@iz2ze46xi6pjjj69ailg9lz ~]# find /root -name *xx.txt -ok rm -rf {} \; < rm ... /root/dir1/xxx.txt > ? y
- -inum 通过inode节点查找文件(通过inode与上面的-exec结合可以实现操作一些稀奇古怪的文件)
例如:通过inode查询文件并显示详细信息:
[root@iz2ze46xi6pjjj69ailg9lz test]# find -inum 264464 -exec ls -l {} \; -rw-r--r-- 1 root root 0 Mar 28 13:46 ./xxx.txt
例如:通过inode为264464的文件并删除文件:
find -inum 264464 -exec rm {} \;
3. locate 文件查找命令:
语法: locate [文件或目录关键字]
locate是从文件的数据库或者文件定期更新的数据库目录查找。所以有时候我们新建的文件用locate查找不到,因为数据库没有这个记录,需要结合下面这个命令使用。
updatedb :update the slocate database 更新整个目录文件的数据库
更新完之后会对刚新建的文件也添加到数据库。
例如:
[root@VM_0_12_centos ~]# touch xxx.txt #建立文件 [root@VM_0_12_centos ~]# ls anaconda-ks.cfg xxx.txt [root@VM_0_12_centos ~]# pwd /root [root@VM_0_12_centos ~]# locate xxx.txt [root@VM_0_12_centos ~]# updatedb #更新数据库目录 [root@VM_0_12_centos ~]# locate xxx.txt /root/xxx.txt
4.grep 在文件中搜寻字符串匹配的行并输出
语法:
grep [指定字符串] [源文件]
例如:
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep ftp /etc/services ftp-data 20/tcp ftp-data 20/udp # 21 is registered to ftp, but also used by fsp ftp 21/tcp ftp 21/udp fsp fspd tftp 69/tcp tftp 69/udp sftp 115/tcp
如果需要显示关键字在文件中的行号可以加-n:
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep ftp -n /etc/services 41:ftp-data 20/tcp 42:ftp-data 20/udp 43:# 21 is registered to ftp, but also used by fsp 44:ftp 21/tcp 45:ftp 21/udp fsp fspd 75:tftp 69/tcp 76:tftp 69/udp
如果需要过滤掉以#开头的行(-v是过滤)
[root@iz2ze46xi6pjjj69ailg9lz ~]# grep -v '^#' /etc/services | more
例如,查看所有java相关进程
ps -ef | grep java | grep -v 'grep'
5.帮助命令 man
manual
语法:
man [命令或配置文件]
例如:查看命令帮助
man ls
查看配置文件的帮助信息:
man /etc/services
帮助分为很多种:默认查的是第一种命令帮助,如果需要查配置文件的帮助可以用 man 5 pwaswd
1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd
6.info 获得帮助信息(与man的显示方式不同)
例如:
[root@iz2ze46xi6pjjj69ailg9lz ~]# info ls
7.whatis 提取命令最基本的用法,获取命令用法
[root@iz2ze46xi6pjjj69ailg9lz ~]# whatis ls ls (1) - list directory contents
8.命令 --help 列出命令的主要选项
[root@iz2ze46xi6pjjj69ailg9lz ~]# umask --help -bash: umask: --: invalid option umask: usage: umask [-p] [-S] [mode]
9.apropos 命令 查看包含字符串的命令的基本信息
[root@iz2ze46xi6pjjj69ailg9lz ~]# apropos fstab fstab (5) - static information about the filesystems systemd-fstab-generator (8) - Unit generator for /etc/fstab
10. help 查看shell内置命令的帮助
例如:当我们查询cd的帮助信息
man cd 列出的是shell内置的命令的名字,不会查出帮助信息,需要使用help来查看
NAME bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - bash built-in commands, see bash(1)
查看shell内置命令帮助信息:
[root@iz2ze46xi6pjjj69ailg9lz ~]# help cd cd: cd [-L|[-P [-e]]] [dir] Change the shell working directory. Change the current directory to DIR. The default DIR is the value of the HOME shell variable. The variable CDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:). A null directory name is the same as the current directory. If DIR begin with a slash (/), then CDPATH is not used.
11.file filename 查看一个文件的类型
[root@iz2ze46xi6pjjj69ailg9lz jj]# file test.tar test.tar: POSIX tar archive (GNU) [root@iz2ze46xi6pjjj69ailg9lz jj]# file testxt testxt: empty [root@iz2ze46xi6pjjj69ailg9lz jj]# file test test: directory
---------------------------------------打包压缩相关命令------------------------------------
4. 打包、压缩文件
windows : zip、rar
linux :gz ,bzip,zip (zip是windows和linux通用的文件格式)
1.gzip 、bzip2 压缩与解压 (压缩成.gz的文件或者解压.gz的文件)
- gzip 只能压缩文件,不能压缩目录,且压缩不保留源文件: 压缩文件的时候名字后缀自动加.gz,大小变为原来的1/6
(1)测试只能压缩文件且不保留源文件:
[root@iz2ze46xi6pjjj69ailg9lz jj]# gzip test/ #打包文件夹失败 gzip: test/ is a directory -- ignored [root@iz2ze46xi6pjjj69ailg9lz jj]# touch testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# gzip testxt #压缩文件 [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test testxt.gz
(2)解压文件 gzip -d xxx.gz 或者 gunzip xxx.gz
[root@iz2ze46xi6pjjj69ailg9lz jj]# gzip testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test testxt.gz [root@iz2ze46xi6pjjj69ailg9lz jj]# gzip -d testxt.gz #解压文件 [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# gzip testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# gunzip testxt.gz #解压文件 [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test testxt [root@iz2ze46xi6pjjj69ailg9lz jj]#
2.tar :打包、拆包命令
tar - cxzjvf <打包后的文件> <欲打包的目录>
- c :创建的一个归档文件 ,即打包文件夹
- x :拆包
- z :以gzip 格式压缩,默认压缩倍数 6倍 (0-9) (打包的同时进行压缩,如果不写只是打包)
- j :以bzip2格式压缩
- v :显示打包或者拆包的文件信息(linux很多参数为-v就是显示详细信息)
- f : 后面紧接一个 归档文件
例如:
- 打包与解包 (只打包不压缩,也就是不加-z参数)
(1)打包文件(打包后的文件是二进制文件)
[root@iz2ze46xi6pjjj69ailg9lz jj]# tar -cvf test.tar ./test #打包 ./test/ [root@iz2ze46xi6pjjj69ailg9lz jj]# ll total 16 drwxr-xr-x 2 root root 4096 Mar 28 15:21 test -rw-r--r-- 1 root root 10240 Mar 28 15:32 test.tar
用file 文件名称 来查看一个文件的类型
[root@iz2ze46xi6pjjj69ailg9lz jj]# file test.tar test.tar: POSIX tar archive (GNU)
(2)解包:
[root@iz2ze46xi6pjjj69ailg9lz jj]# ls test.tar testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# tar -xvf test.tar #解包 ./test/ [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test test.tar testxt
- 打包的同时压缩以及拆包的同时解压缩 (加上-z参数)
(1)打包及压缩
[root@iz2ze46xi6pjjj69ailg9lz jj]# ls test testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# tar -zcvf test.tar.gz test #打包及压缩 test/ [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test test.tar.gz testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# file test.tar.gz #查看文件类型 test.tar.gz: gzip compressed data, from Unix, last modified: Wed Mar 28 15:44:55 2018
(2)拆包及解压缩
[root@iz2ze46xi6pjjj69ailg9lz jj]# ls test.tar.gz testxt [root@iz2ze46xi6pjjj69ailg9lz jj]# tar -zxvf test.tar.gz #拆包及解压缩 test/ [root@iz2ze46xi6pjjj69ailg9lz jj]# ls test test.tar.gz testxt
3.zip,unzip压缩解压文件目录(重要)
zip可以压缩目录,同时会保留文件,zip格式也是linux和windows都能识别的文件格式
- 压缩文件与解压缩文件
(1)压缩文件 (源文件会保留)
[root@VM_0_12_centos test]# ls test test.txt [root@VM_0_12_centos test]# zip test.txt.zip test.txt #压缩文件 adding: test.txt (stored 0%) [root@VM_0_12_centos test]# ls test test.txt test.txt.zip [root@VM_0_12_centos test]# file test.txt.zip #查看文件类型 test.txt.zip: Zip archive data, at least v1.0 to extract
(2)解压缩:
[root@VM_0_12_centos test]# ls test test.txt.zip [root@VM_0_12_centos test]# unzip test.txt.zip #解压缩 Archive: test.txt.zip extracting: test.txt [root@VM_0_12_centos test]# ls test test.txt test.txt.zip
- 压缩目录与解压缩目录
(1)压缩目录
[root@VM_0_12_centos test]# zip test.zip ./test #压缩文件夹 adding: test/ (stored 0%) [root@VM_0_12_centos test]# ls test test.txt test.zip
(2)解压缩
[root@VM_0_12_centos test]# ls test.txt test.zip [root@VM_0_12_centos test]# unzip ./test.zip #解压缩 Archive: ./test.zip creating: test/ [root@VM_0_12_centos test]# ll total 8 drwxr-xr-x 2 root root 4096 Mar 28 15:53 test -rw-r--r-- 1 root root 0 Mar 28 15:53 test.txt -rw-r--r-- 1 root root 160 Mar 28 15:56 test.zip
4:bzip2 压缩文件命令(类似于gzip,加上-k会保留原文件)
bzip2 压缩(解压)文件,压缩文件后缀为bz2 ,类似于gzip,只能压缩文件,压缩目录需要将目录打包成.tar文件
(1)压缩文件
[root@VM_0_12_centos test]# ls test test.txt [root@VM_0_12_centos test]# bzip2 test #压缩目录失败 bzip2: Input file test is a directory. [root@VM_0_12_centos test]# bzip2 test.txt #压缩文件 [root@VM_0_12_centos test]# ls test test.txt.bz2 [root@VM_0_12_centos test]# file test.txt.bz2 test.txt.bz2: bzip2 compressed data, block size = 900k
加上-k保留源文件
[root@VM_0_12_centos test]# ls test test.txt [root@VM_0_12_centos test]# bzip2 -k test.txt #压缩并保留源文件 [root@VM_0_12_centos test]# ll total 8 drwxr-xr-x 2 root root 4096 Mar 28 15:53 test -rw-r--r-- 1 root root 0 Mar 28 15:53 test.txt -rw-r--r-- 1 root root 14 Mar 28 15:53 test.txt.bz2
(2)解压缩
[root@VM_0_12_centos test]# ls test test.txt.bz2 [root@VM_0_12_centos test]# bzip2 -d test.txt.bz2 #解压缩 [root@VM_0_12_centos test]# ls test test.txt
----------------------------------------- 5.网络通信相关指令:---------------------------------
1.write 向当前登录linux的另一个用户发送消息,以Ctral+D为结束(通信用户必须在线)
语法: write 用户名
例如:
root登录窗口:
[root@VM_0_12_centos test]# who #查看当前在线用户 root pts/0 2018-03-28 15:52 (218.26.179.150) qlq pts/1 2018-03-28 16:28 (218.26.179.150) [root@VM_0_12_centos test]# whoami #查看当前是谁登录 root [root@VM_0_12_centos test]# write qlq #向qlq用户发送消息 WHO
qlq窗口:
[qlq@VM_0_12_centos ~]$ Message from root@VM_0_12_centos on pts/0 at 16:29 ... WHO
2. wall 网络广播:向所有用户广播消息
语法:
wall [message] [文件名]
例如:
root用户发送广播
[root@VM_0_12_centos ~]# wall this is test [root@VM_0_12_centos ~]# Broadcast message from root@VM_0_12_centos (pts/1) (Wed Mar 28 16:34:12 2018): this is test
qlq查看广播:
[qlq@VM_0_12_centos ~]$ Broadcast message from root@VM_0_12_centos (pts/1) (Wed Mar 28 16:34:12 2018): this is test
3.ping 测试网络连通性
[root@VM_0_12_centos ~]# ping www.qiaoliqiang.cn #查看网络连通性 PING www.qiaoliqiang.cn (47.94.208.124) 56(84) bytes of data. 64 bytes from 47.94.208.124: icmp_seq=1 ttl=48 time=51.3 ms 64 bytes from 47.94.208.124: icmp_seq=2 ttl=48 time=50.7 ms 64 bytes from 47.94.208.124: icmp_seq=3 ttl=48 time=50.7 ms 64 bytes from 47.94.208.124: icmp_seq=4 ttl=48 time=50.6 ms 64 bytes from 47.94.208.124: icmp_seq=5 ttl=48 time=50.7 ms 64 bytes from 47.94.208.124: icmp_seq=6 ttl=48 time=50.6 ms 64 bytes from 47.94.208.124: icmp_seq=7 ttl=48 time=50.6 ms --- www.qiaoliqiang.cn ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 6008ms rtt min/avg/max/mdev = 50.640/50.782/51.318/0.327 ms
分析丢包率,有的时候会发现连接不上或者数据传输断断续续。
-c 次数,可以指定ping的次数。
-s 字节数 指定ping发送的数据包大小,不能超过60004好像是
例如:
[root@VM_0_12_centos ~]# ping -c 4 -s 60000 tx.qiaoliqiang.cn PING tx.qiaoliqiang.cn (118.126.115.126) 60000(60028) bytes of data. 60008 bytes from 118.126.115.126: icmp_seq=1 ttl=63 time=1.45 ms 60008 bytes from 118.126.115.126: icmp_seq=2 ttl=63 time=1.40 ms 60008 bytes from 118.126.115.126: icmp_seq=3 ttl=63 time=1.34 ms 60008 bytes from 118.126.115.126: icmp_seq=4 ttl=63 time=1.20 ms --- tx.qiaoliqiang.cn ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 12018ms rtt min/avg/max/mdev = 1.200/1.349/1.451/0.098 ms
4.ifconfig 查看网络配置信息(可以加-a参数)
语法:
ifconfig [选项][-a] [网卡设备标识]
[root@VM_0_12_centos ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.27.0.12 netmask 255.255.240.0 broadcast 172.27.15.255 ether 52:54:00:da:e2:37 txqueuelen 1000 (Ethernet) RX packets 4815859 bytes 483225664 (460.8 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4815011 bytes 644353238 (614.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 1213 bytes 168885 (164.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1213 bytes 168885 (164.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0是实际网卡,lo是回环网卡。
例如只查看实际网卡的信息:
可以查看ipv4地址,子网掩码,与广播地址
[root@VM_0_12_centos ~]# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.27.0.12 netmask 255.255.240.0 broadcast 172.27.15.255 ether 52:54:00:da:e2:37 txqueuelen 1000 (Ethernet) RX packets 4819055 bytes 483516557 (461.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4818178 bytes 644770324 (614.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
修改自己的ip地址:
ifconfig eth0 192.168.15.122 netmask 255.255.255.0
另一种方式就是setup打开伪图形界面进行修改。
5.traceroute hostname 查看到一个主机的路由(类似于windows的tracert)
例如:
[root@VM_0_12_centos ~]# traceroute qiaoliqiang.cn #查看到qiaoliqiang.cn的路由 traceroute to qiaoliqiang.cn (47.94.208.124), 30 hops max, 60 byte packets 1 100.99.91.130 (100.99.91.130) 4.844 ms 5.627 ms 6.453 ms 2 * 100.99.115.230 (100.99.115.230) 0.801 ms * 3 10.200.159.157 (10.200.159.157) 0.984 ms 0.627 ms 0.921 ms 4 10.196.0.30 (10.196.0.30) 2.273 ms 10.196.0.34 (10.196.0.34) 2.363 ms 2.5 54 ms 5 10.196.0.78 (10.196.0.78) 2.238 ms 2.319 ms 10.196.0.86 (10.196.0.86) 1.8 96 ms 6 182.150.16.101 (182.150.16.101) 11.021 ms 10.771 ms 182.150.16.105 (182.15 0.16.105) 10.060 ms 7 182.140.229.205 (182.140.229.205) 2.963 ms 182.140.229.177 (182.140.229.177 ) 2.684 ms 125.64.29.201 (125.64.29.201) 2.988 ms 8 182.140.220.229 (182.140.220.229) 10.651 ms 182.140.220.9 (182.140.220.9) 8.763 ms 182.140.220.229 (182.140.220.229) 10.565 ms 9 * 202.97.36.137 (202.97.36.137) 45.664 ms 202.97.36.45 (202.97.36.45) 60.0 38 ms 10 36.110.244.26 (36.110.244.26) 57.669 ms 57.562 ms * 11 * * * 12 * 180.149.141.146 (180.149.141.146) 52.405 ms * 13 * * * 14 101.200.109.129 (101.200.109.129) 49.570 ms * 123.56.34.22 (123.56.34.22)
总结:我们可以通过路由IP查看所经过的地址,利用IP查看IP所在的地址。
6. curl ifconfig.me 查看自己的公网IP
[root@VM_0_12_centos ~]# curl ifconfig.me 118.126.115.126
7.实际上我们在编辑的时候是编辑/etc/sysconfig/network-scripts/ifcfg-eth0 文件
DEVICE='eth0' NM_CONTROLLED='yes' ONBOOT='yes' BOOTPROTO='dhcp' PERSISTENT_DHCLIENT=yes RES_OPTIONS='rotate timeout:1'
8.linux配置虚拟域名:
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
-----------------------------------linux 系统命令(重要)---------------------------------
0.date查看日期与指定格式显示日期:
NAME date - print or set the system date and time SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) %b locale's abbreviated month name (e.g., Jan) %B locale's full month name (e.g., January) %c locale's date and time (e.g., Thu Mar 3 23:05:25 2005) %C century; like %Y, except omit last two digits (e.g., 20) %d day of month (e.g., 01) %D date; same as %m/%d/%y %e day of month, space padded; same as %_d %F full date; same as %Y-%m-%d %g last two digits of year of ISO week number (see %G) %G year of ISO week number (see %V); normally useful only with %V %h same as %b %H hour (00..23) %I hour (01..12) %j day of year (001..366) %k hour, space padded ( 0..23); same as %_H %l hour, space padded ( 1..12); same as %_I %m month (01..12) %M minute (00..59) %n a newline %N nanoseconds (000000000..999999999) %p locale's equivalent of either AM or PM; blank if not known %P like %p, but lower case %r locale's 12-hour clock time (e.g., 11:11:04 PM) %R 24-hour hour and minute; same as %H:%M %s seconds since 1970-01-01 00:00:00 UTC %S second (00..60) %t a tab %T time; same as %H:%M:%S %u day of week (1..7); 1 is Monday %U week number of year, with Sunday as first day of week (00..53) %V ISO week number, with Monday as first day of week (01..53) %w day of week (0..6); 0 is Sunday %W week number of year, with Monday as first day of week (00..53) %x locale's date representation (e.g., 12/31/99) %X locale's time representation (e.g., 23:13:48) %y last two digits of year (00..99) %Y year %z +hhmm numeric time zone (e.g., -0400) %:z +hh:mm numeric time zone (e.g., -04:00) %::z +hh:mm:ss numeric time zone (e.g., -04:00:00)
例如:
[root@iz2ze46xi6pjjj69ailg9lz ~]# date +%F #指定日期显示格式 2018-03-31 [root@iz2ze46xi6pjjj69ailg9lz ~]# date +%M 16 [root@iz2ze46xi6pjjj69ailg9lz ~]# date +%D 03/31/18
1.stat :查看文件的详细信息
stat bj.txt
2.who与whoami
- who : 查看在线的用户
[root@VM_0_12_centos test]# who root pts/0 2018-03-28 15:52 (218.26.179.150) qlq pts/1 2018-03-28 16:09 (218.26.179.150)
- whoami :查看当前自己的用户
[root@VM_0_12_centos test]# whoami root
3.hostname : 显示主机名
hostname
hostname test 将主机名修改为test,重开一个窗口登录会变为test
4.uname :显示系统信息
-a :显示完整的系统信息 (如果带x86_64代表64位系统,如果不是就是32位系统)
5.top :显示当前耗时的进程的信息 ,每3秒刷新一次
cltr+c 中断
6.ps :显示当前进程的快照
ps -ef 查看所有进程。
ps -ef | grep xxx 查看进程并过滤条件
- -A 列出所有的行程
- -w 显示加宽可以显示较多的资讯
- -au 显示较详细的资讯
- -aux 显示所有包含其他使用者的行程
- au(x) 输出格式 :
例如:查看redis的进程信息
ps -ef |grep redis
3639为进程ID
7.du :显示文件的大小信息
[root@iz2ze46xi6pjjj69ailg9lz ~]# du Exam.war 208608 Exam.war
8.df :磁盘使用情况 disk free
内存查看命令: free
free -g(以GB为单位进行显示);-h 以人类能看懂的格式展示
9.ifconfig :查看或者配置网卡信息 ,好比windows 的ipconfig
ipv4:32位 2-32次方 ipv6 128位 是 ipv4 2-96次方倍数
设置虚拟机ip地址:
1. 设置vmware的连接方式
- 共享宿主机的ip地址,在网上邻居找不到
- 桥接方式,需要单独设置ip,可以在网上邻居查找
2. 图形界面设置ip地址
edit connection --》ipv4--》manual(手工设置)--》add (ip地址,子网掩码)
3.命令方式设置ip地址
静态设置ip:
sudo ifconfig eth0 192.168.15.122 netmask 255.255.255.0
11.clear : 清除屏幕 windows: cls 也可以用Ctrl+l快捷键,Ctrl+u清除光标前面输入的字符
12.history 查看执行过的命令记录
!命令行号 可以执行对应行号的命令
13.kill :杀死进程
kill pid
例如杀死PID为3639的进程:(有时候需要root权限)
kill -9 3639
14.netstat :网络连接详细信息(带LISTENING的是standalone进程,一直在监听端口)
C:\Users\WWW>netstat -ano | grep 8005 TCP 127.0.0.1:8005 0.0.0.0:0 LISTENING 2190932 C:\Users\WWW>jps 2148724 2190932 Bootstrap
15. useradd 添加用户
- 查看用户信息
sudo cat /etc/passwd
itcast:x:1000:1000:UbuntuA,,,:/home/itcast:/bin/bash
- itcast:用户名
- x :密码 :已经加密 ,密码存放在 /etc/shadow
- 1000: 账号id ,userId
- 1000: 组id ,group id
- UbuntuA,,, :账号描述
- /home/itcast :该账号存放文件的默认位置 ~
- /bin/bash:该用户的shell脚本的解析方式 ,sh 、bash、rbash
- 创建用户并设置密码
sudo useradd lijun -d /home/lijun -s /bin/bash
-d :指定该用户的home 路径
- s :该用户的shell解析方式
-d -s 也可以不指定,linux会默认在/home下面创建对应的用户名目录作为用户的根目录
例如:
[root@VM_0_12_centos test]# useradd qlq #创建用户qlq [root@VM_0_12_centos test]# passwd qlq #修改qlq用户的密码 Changing password for user qlq. New password: BAD PASSWORD: The password is a palindrome Retype new password: passwd: all authentication tokens updated successfully.
也可以手动创建目录并执行该用户的默认工作空间:
步骤:
1. 创建 /home/lijun 目录
2. 执行 useradd 命令(指明目录为上面新建的目录)
3. 用 passwd 设置密码
4. su 切换用户
具体的用户和用户组管理参考: http://www.runoob.com/linux/linux-user-manage.html
16.别名以及定义别名:
- 定义别名alias 别名名称=命令名称 (命名名称如果加选项需要用引号包起来)
alias copy=cp
alias xrm="rm -r"
例如:
[root@VM_0_12_centos ~]# alias drm="rm -r" [root@VM_0_12_centos ~]# ls anaconda-ks.cfg test [root@VM_0_12_centos ~]# drm test/ rm: descend into directory ‘test/’? y
- 查询别名:
[root@VM_0_12_centos ~]# alias alias cp='cp -i' alias drm='rm -r' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto'
- 删除别名
[root@VM_0_12_centos ~]# unalias drm
17.输入输出重定向:
同标准IO一样,shell对于每个进程预先定义3个文件描述(0,1,2).分别对应于
0: (STDIN) 标准输入
1.(STDOUT) 标准输出
2:(STDERR) 标准错误输出
- >或>> 输出重定向:
- > :覆盖模式
命令: echo "ww">aaa
[root@VM_0_12_centos ~]# ls ./ > ./test.txt [root@VM_0_12_centos ~]# cat ./test.txt anaconda-ks.cfg test.txt
- >>:追加模式
[root@VM_0_12_centos ~]# ls ./ >> ./test.txt [root@VM_0_12_centos ~]# cat ./test.txt anaconda-ks.cfg test.txt anaconda-ks.cfg test.txt
有时候我们不希望一些提示信息输出在屏幕,可以将结果重定向到一个文件,如果我们不希望看到,同时又不想保存到文件,可以重定向到/dev/null,/dev/null是unix,linux的无底洞。
[root@VM_0_12_centos ~]# echo "test" > /dev/null [root@VM_0_12_centos ~]# ll /dev/null crw-rw-rw- 1 root root 1, 3 Mar 20 09:18 /dev/null [root@VM_0_12_centos ~]# cat /dev/null [root@VM_0_12_centos ~]#
- < 输入重定向,信息不是从键盘读取,是从资源文件读取
例如:广播一个文件中的信息
[root@VM_0_12_centos ~]# wall < ./test.txt [root@VM_0_12_centos ~]# Broadcast message from root@VM_0_12_centos (Wed Mar 28 17:18:39 2018): anaconda-ks.cfg test.txt anaconda-ks.cfg test.txt
- 错误信息重定向到日志中(重要)
[root@VM_0_12_centos ~]# XX 2> ./cw.err [root@VM_0_12_centos ~]# cat ./cw.err bash: XX: command not found
这个错误重定向可以用于当我们在夜间复制文件报错的时候将错误信息重定向到一个错误日志文件中,当正确执行的时候不会执行错误重定向
18.管道: 将一个命令的输出作为另一个命令的输入 |
使用方法:
命令 | 命令2 | 命令3...
例如:
[root@VM_0_12_centos ~]# ls | grep cw | more cw.err
解释:相当远ls查询出来的结果1放到第二个grep的cw后面作为输入 grep cw 结果1
将上面的grep cw 结果 出来的结果2放到more 后面作为输入 more 结果2
19. ; && ||操作符
; 让命令顺序执行
&& 逻辑与
|| 逻辑或
- ; 多个命令顺序执行:
[root@VM_0_12_centos ~]# ls;pwd;cd /;pwd anaconda-ks.cfg cw.err xxx /root / [root@VM_0_12_centos /]#
结合错误重定向出错后重定向到日志,看是哪一步出错了:(让命令顺序执行,出错之后将错误记录下来)
[root@VM_0_12_centos ~]# ls;pwd;d / 2> ./bb.err;pwd anaconda-ks.cfg xxx /root /root [root@VM_0_12_centos ~]# cat ./bb.err -bash: d: command not found
- && 逻辑与 (前面的命令执行成功后面的命令才会执行)
comm1 && comm2
成功 执行
失败 不执行
第一个命令执行成功,第二个命令执行:
mkdir xx && rm -rf xx
第一个命令失败,第二个命令也不会执行:
[root@VM_0_12_centos ~]# ls anaconda-ks.cfg [root@VM_0_12_centos ~]# rE -rf xxx && mkdir xxx -bash: rE: command not found
多个命令的时候前面成功后面才会执行:
[root@VM_0_12_centos ~]# ls && pwd && ls && pwd anaconda-ks.cfg /root anaconda-ks.cfg /root
前面执行失败之后后面的不会执行;
[root@VM_0_12_centos ~]# ls && pwd && lX && pwd anaconda-ks.cfg /root -bash: lX: command not found
- || 逻辑或 (前面的执行成功不会执行后面的,否则会执行后面的,多个命令中执行一个)
例子:
第一个成功不会执行后面的
[root@VM_0_12_centos ~]# ls || pwd || cd / anaconda-ks.cfg
第一个失败执行第二个:
[root@VM_0_12_centos ~]# lX || pwd || cd / -bash: lX: command not found /root
20.命令替换符: `命令` (注意符号是键盘上1左边的符号,不是单引号)
将一个命令的输出作为另一个命令的参数
语法: 命令1 `命令2`
例如:
[root@VM_0_12_centos ~]# which touch /usr/bin/touch [root@VM_0_12_centos ~]# ls /usr/bin/touch /usr/bin/touch [root@VM_0_12_centos ~]# ls -l `which touch` #命令替换符 -rwxr-xr-x. 1 root root 62432 Nov 20 2015 /usr/bin/touch
21.与`等价的命令替换符为$(command)
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll $(which touch) -rwsr-xr-x. 1 root root 62488 Nov 6 2016 /usr/bin/touch
22.seq命令用于产生从某个数到另外一个数之间的所有整数。
语法:
seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾数
选项
-f, --format=格式 使用printf 样式的浮点格式 -s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同
-f选项:指定格式
#seq -f"%3g" 9 11 9 10 11
%
后面指定数字的位数 默认是%g
,%3g
那么数字位数不足部分是空格。
#sed -f"%03g" 9 11 #seq -f"str%03g" 9 11 str009 str010 str011
这样的话数字位数不足部分是0,%
前面制定字符串。
-w选项:指定输出数字同宽
seq -w 98 101 098 099 100 101
不能和-f
一起用,输出是同宽的。
-s选项:指定分隔符(默认是回车)
seq -s" " -f"str%03g" 9 11 str009 str010 str011
要指定/t
做为分隔符号:
seq -s"`echo -e "/t"`" 9 11
指定\n
作为分隔符号:
seq -s"`echo -e "\n"`" 9 11 19293949596979899910911
23 {}的用法:
①大括号拓展。(通配(globbing))将对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。第一种:对大括号中的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。第二种:对大括号中以点点(..)分割的顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt
[root@iz2ze46xi6pjjj69ailg9lz ttt]# touch test{0..5}.txt [root@iz2ze46xi6pjjj69ailg9lz ttt]# ls test0.txt test1.txt test2.txt test3.txt test4.txt test5.txt [root@iz2ze46xi6pjjj69ailg9lz ttt]# echo str{b..d} strb strc strd [root@iz2ze46xi6pjjj69ailg9lz ttt]# echo str{b,d} strb strd
②代码块,又被称为内部组,这个结构事实上创建了一个匿名函数 。与小括号中的命令不同,大括号内的命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。{}的第一个命令和左括号之间必须要有一个空格。{}也可以用于多行注释,作为函数包起来只是不调用即可。
24. awk 域分割符 '命令' (单引号)
不写的话默认以空格分割。
例1:检测系统中UID为0的用户
原来在/etc/passwd中的信息:
[root@VM_0_12_centos sshDemo]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash
awk检测:
[root@VM_0_12_centos sshDemo]# awk -F: '$3==0 {print $1}' /etc/passwd root
解释: 以:分割,$3表示取第三个位0的,然后打印第一位,针对/etc/passwd文件进行操作
例如:直接杀掉java相关的进程
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
例2:检测系统中密码为空的用户
1.系统中源文件格式
[root@VM_0_12_centos sshDemo]# tail -2 /etc/shadow qlq11:$1$OaDtFguj$RDXrwYOWXC.KZsz1lukic/:17621:0:99999:7::: apache:!!:17621::::::
发现aoache的账户是锁着的,没有密码
2.检测:
[root@VM_0_12_centos sshDemo]# awk -F: 'length($2)==0 {print $1}' /etc/shadow
检测: 以:分割,如果第二位的长度为0就满足条件,满足条件的打印第一位,针对/etc/shadow文件
3解锁apache账户再次检测:.
[root@VM_0_12_centos sshDemo]# passwd -uf apache Unlocking password for user apache. passwd: Success [root@VM_0_12_centos sshDemo]# awk -F: 'length($2)==0 {print $1}' /etc/shadow apache
例3:检测一个用户的所有的进程的ID
ps-aux 原数据格式:
[root@VM_0_12_centos sshDemo]# ps -aux|more USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 123036 3476 ? Ss Mar20 0:42 /usr/lib/syste d/systemd --switched-root --system --deserialize 21 root 2 0.0 0.0 0 0 ? S Mar20 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Mar20 0:10 [ksoftirqd/0]
检测:
与qlq相关的信息:
[root@VM_0_12_centos sshDemo]# ps -aux |grep qlq root 12920 0.0 0.2 148232 5316 ? Ss 12:45 0:00 sshd: qlq [priv] qlq 12924 0.0 0.1 148232 2240 ? S 12:45 0:00 sshd: qlq@pts/0 qlq 12925 0.0 0.1 116036 2712 pts/0 Ss+ 12:45 0:00 -bash root 13615 0.0 0.0 112644 964 pts/2 R+ 12:57 0:00 grep --color=auto qlq
awk提取信息:
[root@VM_0_12_centos sshDemo]# ps -aux |grep qlq |awk '$1=="qlq" {print $2}' 12924 12925
从前面提取与qlq相关的信息,用awk分割,默认以空格分割,分割之后取第一位是qlq的证明是qlq用户的,并且打印第二位,第二位是PID。
如果想让qlq退出登录直接杀死与qlq相关的进程:
[root@VM_0_12_centos sshDemo]# kill $(ps -aux |grep qlq |awk '$1=="qlq" {print $2}') [root@VM_0_12_centos sshDemo]# who root pts/2 2018-04-01 11:21 (218.26.55.132)
$(cmd)与命令替换符`cmd`的作用相对等。
例4:awk传递一个变量
[root@VM_0_12_centos ~]# echo ${word} roo [root@VM_0_12_centos ~]# /usr/bin/grep ${word} /etc/passwd | awk -F: -v word1=${word} 'index($1,word1)>0 {print $1}' root
借助-v
选项,可以将外部值(并非来自stdin)传递给awk:
VAR=10000 echo | awk -v VARIABLE=$VAR '{ print VARIABLE }'
更详细的awk用法参考: http://man.linuxde.net/awk
其他常用的:
1.scp文件复制:
本地桌面复制到远程:
- windows下的盘符可以/c/... 不用加冒号
liqiang@root MINGW64 / $ cd /c/Users/liqiang/Desktop/ liqiang@root MINGW64 ~/Desktop $ scp ./服务器.rar root@qiaoliqiang.cn:/home 服务器.rar 100% 145MB 956.3KB/s 02:34 liqiang@root MINGW64 ~/Desktop $
- 将本地C:\Users\liqiang\Desktop\redis\redis\bin目录下面的所有文件上传到服务器/usr/local/redis/bin/目录下:
$ scp /c/Users/liqiang/Desktop/redis/redis/bin/* root@qiaoliqiang.cn:/usr/local/redis/bin/ redis-benchmark 100% 1874KB 1.8MB/s 00:01 redis-check-aof 100% 4539KB 905.9KB/s 00:05 redis-check-rdb 100% 4539KB 755.1KB/s 00:06 redis-cli 100% 2021KB 1.0MB/s 00:02 redis-server 100% 4539KB 1.1MB/s 00:04
远程复制到本地桌面: windows下的目录从盘开始,以斜杠分割,不用加冒号。
C:\Program Files\Git>scp root@qiaoliqiang.cn:/home/test.html /c/Users/liqiang/De sktop/ test.html 100% 68 0.9KB/s 00:00 C:\Program Files\Git>
补充:
1、我的系统中安装了那些rpm软件包。
rpm -qa 讲列出所有安装过的包
如果要查找所有安装过的包含某个字符串sql的软件包
rpm -qa | grep sql
2、如何获得某个软件包的文件全名。
rpm -q mysql
可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11
3、一个rpm包中的文件安装到那里去了?
rpm -ql 包名
注意这里的是不包括.rpm后缀的软件包的名称,也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可执行程序放到那里去了,也可以用which,比如:
which mysql
4.查看某个命令的安装路径
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
5.source
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。因为linux所有的操作都会变成文件的格式存在。
6.export命令
export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量
[root@VM_0_12_centos ~]# export ww=ww #将变量添加到环境变量 [root@VM_0_12_centos ~]# ee=ee #定义普通的变量(不会加到环境变量) [root@VM_0_12_centos ~]# env | grep ww ww=ww [root@VM_0_12_centos ~]# env | grep rr [root@VM_0_12_centos ~]# unset ww #从环境变量删除 [root@VM_0_12_centos ~]# env | grep ww
7.declare
declare命令用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。
[root@VM_0_12_centos ~]# declare ppp=ppp #声明变量 [root@VM_0_12_centos ~]# lll=lll #声明变量 [root@VM_0_12_centos ~]# echo $ppp ppp [root@VM_0_12_centos ~]# echo $lll lll [root@VM_0_12_centos ~]#
4查看系统信息的命令
cat /proc/cpuinfo 查看cpu信息
cat /proc/meminfo 查看内存信息
cat /etc/redhat-release 查看系统版本(CentOS Linux release 7.3.1611 (Core))
uptime # 查看系统运行时间、用户数、负载
df -h 查看硬盘分区信息(-h 表示human,转换成人类可以识别的单位)
[root@VM_0_12_centos ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 50G 9.4G 38G 21% / devtmpfs 911M 0 911M 0% /dev tmpfs 920M 24K 920M 1% /dev/shm tmpfs 920M 368K 920M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup tmpfs 184M 0 184M 0% /run/user/0
du -h 查看目录的大小
[root@VM_0_12_centos ~]# du -h ./sshDemo/ 80K ./sshDemo/
curl ifconfig.me 好看本机的公网ip地址
runlevel 查看当前运行级别
init [01234567Sc] 改变运行级别为对应级别 (不用关机切换运行级别)
[root@iz2ze46xi6pjjj69ailg9lz ~]# systemctl get-default #查看系统的缺省运行级别 multi-user.target
setup 伪图形界面(配置一些信息,可以配置IP地址等信息)
getconf LONG_BIT 查看linux-系统位数(32或者64)
5.域名解析: nslookup命令是常用域名查询工具,就是查DNS信息用的命令。
例如:
[root@VM_0_12_centos ~]# nslookup tx.qiaoliqiang.cn Server: 183.60.83.19 Address: 183.60.83.19#53 Non-authoritative answer: Name: tx.qiaoliqiang.cn Address: 118.126.115.126
[root@VM_0_12_centos ~]# nslookup -q=mx tx.qiaoliqiang.cn Server: 183.60.83.19 Address: 183.60.83.19#53 Non-authoritative answer: *** Can't find tx.qiaoliqiang.cn: No answer Authoritative answers can be found from: qiaoliqiang.cn origin = dns31.hichina.com mail addr = hostmaster.hichina.com serial = 2017090208 refresh = 3600 retry = 1200 expire = 86400 minimum = 360
6.设置linux的域名服务器DNS
[root@iz2ze46xi6pjjj69ailg9lz yum.repos.d]# cat /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
7.nano 文本编辑(普通的文本编辑器)
nano 文件名
保存和退出
如果你要保存所做的修改,按下Ctrl+O。想要退出,按下Ctrl+X。如果你退出前没有保存所做的修改,它会提示你是否要保存。如果不要,请按N,反之,则按Y。然后它会让你确认要保存的文件名,确认或修改后按Enter即可。如果你没有修改好而不小心按了保存键,您可以在请求确认文件名时按Ctrl+C来取消。
剪切和粘贴
要剪切一整行,请用Ctrl+K(按住Ctrl不放,再按下K键)。光标所在的行便消失了。要粘贴它,只需把光标移动到您所要粘贴的位置,然后按Ctrl+U即可。要移动多行,只需多按几次Ctrl+K把需要移动内容都剪切下来,然后按一次Ctrl+U就可以把刚剪切的内容全部粘贴上来。
如果你想使用更精确的剪切控制,则需要给文本做标记。移动光标到需要剪切文本的开头,按下Ctrl+6(或者Alt+A)。然后移动光标到待剪切文本的末尾:被做了标记的文本便会反白。要撤消文本标记,只需再按一次Ctrl+6。用Ctrl+K来剪切被标记的文本,用Ctrl+U来粘贴。
搜索特定文字
当你想搜索某特定文字时,只要想成"WhereIs"而不是"Search",事情就简单了。只要按下Ctrl+W,键入你要搜索的字符串,再按Enter就可以了。想再次搜索相同的字符串,可以直接按Alt+W。
8. sh中的exec命令
系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容。而且exec执行脚本之后会执行另一个脚本,而且自身脚本之后的命令不会被执行。也就是相当于此进程去执行另一个脚本,执行完之后退出。
例如:
#!/bin/bash var='var' echo ${var} exec ls echo "ls之后"
执行完ls之后进程会关掉,不会打印 ls之后。
9. lsof ( list open files ) 列出当前系统打开文件的工具
列出所有的网络连接
lsof -i
列出所有tcp 网络连接信息
lsof -i tcp
列出所有udp网络连接信息
lsof -i udp
列出谁在使用某个端口
lsof -i :3306
10. 关于screen用法,可以实现远程断开会话保持
11.find 查找文件:
最多遍历一层,搜索文件类型是文件、文件名称以fy开头的文件: -maxdepth指定搜索深度,-type指定搜索的类型
find . -maxdepth 1 -name "fy*" -type f
12. 关于less的简单使用记录如下:
-b 《缓冲区大小》 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o 《文件名》 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x 《数字》 将“tab”键显示为规定的数字空格 /字符串:向下搜索“字符串”的功能 ?字符串:向上搜索“字符串”的功能 n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关) b 向后翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一行 回车键 滚动一页 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页 1、搜索 当使用命令 less file-name 打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会被高亮显示。 1.1 向前搜索 / : 使用一个模式进行搜索,并定位到下一个匹配的文本 n : 向前查找下一个匹配的文本 N : 向后查找前一个匹配的文本 2.向后搜索 ? : 使用模式进行搜索,并定位到前一个匹配的文本 n : 向后查找下一个匹配的文本 N : 向前查找前一个匹配的文本 3.全屏导航 j : 向下移动一行 k : 向上移动一行 4.其它导航 G : 移动到最后一行 g : 移动到第一行 按空格:向下翻一页 b:向上翻一页 d:向下翻半页 u:向上翻半页 q / ZZ : 退出 less 命令 5.编辑文件 v : 进入编辑模式,使用配置的编辑器编辑当前文件 6.less 版 tail -f 在 Linux 动态查看日志文件常用的命令非 tail -f 莫属,其实 less 也能完成这项工作,使用 F 命令。 使用 less file-name 打开日志文件,执行命令 F,可以实现类似 tail -f 的效果。