1. pwd: 查看当前光标所在的路径
2. home directory: 当前用户所在的默认目录
/root : 超级管理员的默认目录
3. cd 切换
(1) cd path : 切换到指定路径
(2) cd : 直接切换到home directory
(3) cd - : 回退到上一次输命令时所在的目录
(4) cd ~ : 切换到当前用户的home directory
(5) cd ../ : 切换到上一层目录
(6) cd ../../ : 切换到上两层目录
4. ls 查看当前目录下的文件和文件夹的名称
(1) ls -l(简写为ll) : 查看当前目录下的文件和文件夹的详细信息
a) ll + 文件夹名称:查看当前目录下特定的文件夹里文件或文件
夹的信息
b) ll /usr/sbin/user* : 显示/usr/sbin文件夹下以user开头的文件
(2) ls -l -a : 查看隐藏文件( 隐藏文件和隐藏文件夹以 "."开头 )
(3) ls -l -h : 查看文件的大小( 不是文件夹 )
(4) ls -l -rt : 将该目录下的文件或文件夹以时间顺序排序
5. mkdir 创建文件夹
(1) mkdir + 文件夹名称 : 创建一层文件夹
(2) mkdir -p : 级联创建文件夹
a) mkdir -p 1/2/3 : 在当前目录下递归创建文件夹
b) mkdir -p /1/2/3 : 在根目录下递归创建文件夹
(3) mkdir 4 5 6 : 在光标所在的目录下创建3个文件夹 4 5 6
6. 绝对路径与相对路径
(1) 绝对路径: 从根目录开始的路径
(2) 相对路径: 从当前目录( pwd得到的目录 )开始的路径
7. 创建文件
(1) vim + 文件名:
(2) touch + 文件名 : 创建一个空文件
8. mv 与 cp
(1) mv henry.log newFolder : 将henry.log移动到newFolder文件夹
(类似于windows的剪切)
(2) cp henry.log newFolder : 将henry.log复制到newFolder
9. ">" 与 ">>"
(1) echo "hello" > henry.log : 清空henry.log的内容,将hello写入到
henry.log的原有内容的后面
(2) echo "hello" >> henry.log : 不清空henry.log, 将hello追加到
henry.log中
10. 显示文件内容命令
(1) cat henry.log : 将henry.log的内容全部显示在terminal中
(2) more henry.log : 将henry.log的内容分页显示在terminal中
(3) less henry.log : 将henry.log的内容分页显示在terminal中
(在工作中没怎么使用过,等用到了再探讨它与less的区别)
11. 配置命令别名
(1) alias cdrz = 'cd /root/henry' : 临时配置 cdrz 为 cd /root/henry, 但
是此为临时配置, 即打开另一个terminal无法找到该别名
12. 全局环境变量配置
(1) 在 /etc/profile 中写入全局环境变量
(2) source /etc/profile :生效全局环境变量配置
13. 个人环境变量
(1) 配置文件: home_directory/.bash_profile
OR
home_directory/.bashrc
(2) 生效个人环境变量 : source home_directory/.bash_profile
OR
. .bash_profile(此时路径就是home_directory)
14. 切换用户
(1) su henry: 切换到henry账户,并且所在目录即输入su命令时所在的目录, 不执行环境变量
(2) su - henry: 切换到henry账户,并且所在目录即henry的home directory, 执行环境变量
15. 删除文件
(1) rm henry.log : 删除henry.log文件(先询问是否还要删除,如果是自己
创建的就直接删除)
(2) rm -f henry.log : 强制删除henry.log, 不询问
(3) rm -rf henry.log : 不询问删除文件夹
16. 查询历史命令
history : 将输入过的命令一行一行显示
!241: 执行屏幕上241行的命令
17. 用户与用户组
(1) 寻找与用户相关的文件: ll /usr/sbin/user*
(2) 寻找与组相关的文件: ll /usr/sbin/group*
(3) 增加用户henry: useradd henry
(4) 查看用户henry的id信息: id henry
显示结果:( 用户id, 主组id, 组id)
uid=501(henry) gid=501(henry) 组=501(henry)
注: 创建了一个henry用户, henry用户组, 其中henry用户组为主组
(5) 删除用户henry: userdel henry
注: 在删除用户henry之后,其home directory不会删除,如果重新创建用户henry,
系统会报警告:此主目录已经存在。
(6) 查看系统中的所有用户 : cat /etc/passwd
teminal显示: henry:x:501:501::/home/henry:/bin/bash
其中/home/henry为henry用户的home directory
(7) 如何使henry用户无法登录: 在 /etc/passwd中修改
a) henry:x:501:501::/home/henry:/bin/nologin
再次登录henry用户时,会报su: /bin/nologin: No such file
or directory 错误
b) henry:x:501:501::/home/henry:/bin/false
切换到用户henry时没有提示,切换失败
(8) 如何找到组: cat /etc/henry
(9) 增加组: groupadd newGroup
(10) 将某个用户添加到新组中: usermod -a -G newGroup henry
此时henry的情况:
uid=501(henry) gid=501(henry) groups=501(henry),502(newGroup)
此时henry的主组还是henry组
(11) 将newGroup设置为henry的主组: usermod -g newGroup henry
但是此时henry的信息里没有henry组
uid=501(henry) gid=502(newGroup) groups=502(newGroup)
所以需要将henry组加回到henry用户
18. 如何查看命令帮助
(1) man + 命令 : 详细帮助
(2) 命令 --help : 精简帮助
(3) 以usermod为例:
a) 输入usermod --help显示
Usage: usermod [options] username : 表示命令如何使用, []表示可选选项
-G, --groups GROUPS new list of supplementary GROUPS
(命令简写, 命令全拼 哪个组 命令代表的意思)
19 管道符
(1) 管道符 : "|"
(2) 管道符作用 : 命令1 | 命令2 ===> 将命令1结果作为命令2的输入
(3) 统计文件中有多少行: cat henry.log | wc -l
(4) 模糊匹配: cat henry.log | grep aod
找到文件中包含aod字符的行
20. 重置用户密码
(1)passwd henry
由于之前在/etc/profile中将henry的home directory修改了,但是没有将
原home directory的隐藏文件复制过来,所以当su henry时, 会出现bash-4.1$
解决方案是cp /etc/skel/* newHomeDirectory, 之后再修改权限
21. 修改权限
(1) 什么是权限
a) 读: r 4 (读命令: cat, more)
b) 写: w 2 (写命令 >, >>, vim)
c) 执: x 1 (一般是对于shell脚本来说)
d) 无权限: - 0
(2) Example
drwxrwxr-x. 2 henry henry 4096 Oct 1 16:37 newFolder
d代表目录,d之后有三组权限: rwx rwx r-x <==> 775
第一组: 代表当前用户henry对该文件或文件夹的权限,可读可写可执行
第二组: 代表当前用户组的所有成员对该文件的权限,也是可读可写可执行
第三组: 代表其他用户组的所有成员对该文件的权限,可读不可写可执行
(3) 修改权限
chmod 755 -R /home: 递归的给/home下的文件和文件夹修改权限
(4) shell脚本
a) 头部添加 #!/bin/bash
b) 赋予权限
i) 给其他用户赋予权限: "." + 相对路径 或者 直接输入绝对路径
ii) 给其他用户不赋予x权限: 使用sh命令执行脚本
22. 网络安装
(1) yum install httpd : 网络安装httpd
(2) yum -y install httpd : 不询问 y/n 的方式安装httpd
(3) service httpd status : 查看httpd是否启动
service httpd status: 启动httpd
(4) ps -ef: 打印后台运行的所有程序
注: ps -ef | grep henryLoop的结果是(用户, 进程id, )
root 6209 6010 0 05:46 pts/1 00:00:00 grep henryLoop
也就是说grep henryLoop也是一个进程
如果不想显示grep的话,输入ps -ef | grep henryLoop| grep -v grep
(5) 消灭一个进程 : kill -9 pid
(6) Example: httpd
root 6110 1 0 05:33 ? 00:00:00 /usr/sbin/httpd
apache 6115 6110 0 05:33 ? 00:00:00 /usr/sbin/httpd
apache 6116 6110 0 05:33 ? 00:00:00 /usr/sbin/httpd
假如kill -9 6110之后, 6115和6116进程仍旧存在,但是httpd服务已经停止
重新启动时, 由于6115和6116 apache进程存在, 无法重启
解决方法是 kill -9 $(pgrep -f http), kill所有匹配的
但是kill之前必须ps -ef查看一下kill的进程是否是需要kill的
(7) 查询端口号: netstat -nlp | grep 2985
Local Address(:::80)
(8) 几种Local Address的意义
a) 0.0.0.0:22 或者 :::22 表示本机ip的22端口, 任意ip都可以访问
b) 127.0.0.1:22 只能是本机才可以访问
c) 192.168.152.122:22 能访问到该ip地址才可以访问
(9) 查询所有rpm包: rpm -qa
(10) rpm -e --nodeps + 包名: 移除某个包不用先移除其依赖
23. 临时获得root权限
(1) 先在/etc/sudoers中加入henry(想要获得root权限的用户) ALL=(ALL) ALL
OR
yanghenry ALL=(root) NOPASSWD:ALL(sudo时不需要输入密码)
(2) 此时henry用户可以用sudo 获取临时root权限
(3) 切换用户并获得root权限: sudo su - henry
24. chmod 与 chown(只有这两个命令出现R)
(1) chmod : 修改权限
a) chmod 777 文件
b) chmod -R 777 文件夹
(2) chown henry:henry 文件 : 将某个文件改为henry的用户组
(3) 注意: 在生产上,如果某个文件属于特定的用户组,那么只有该用户组的用户才能访问该文件
(4) 如何给一个脚本的三组权限都加上执行权限
a) chmod -x test.sh
b) chmod +x test.sh
(5) 如果只关心当前用户(第一组)是否能执行test.sh
a) chmod u+x test.sh
(6) 如果只关心当前组用户(第二组)是否能执行test.sh
a) chmod g+x test.sh
(7) 如果只关心当前用户(第三组)是否能执行test.sh
a) chmod o+x test.sh
(8) 使用英文字母+数字形式作为机器名
25. 查看ip
(1) ifconfig : 查看网络的一些信息(包括网卡名称等)
(2) 网卡对应的配置文件在哪个文件夹
a)在/etc/sysconfig/network-scripts
eg. etho的配置信息就在ifcfg-eth0文件里
(3) 下图中inet addr就是ip
(4) 另外查看ip的方法:
a) ping localhost(或者是主机名称)
b) hostname - i
c) 去 /etc/hosts中找, 此文件默认开头有两行如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
注意该两行不要删除
![123.png](https://upload-images.jianshu.io/upload_images/14542040-535e3966626317db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
26. 如何判断linux服务是否存活
(1) 具体步骤:
a) 首先ping服务所在机器的ip: 保证保罗是畅通的
b) 查看该服务的端口号和服务地址
eg. 192.168.42.131:80
c) ping ip + 端口号: telnet 192.168.42.131 80
(2) 相关命令
a) 查看进程是否存在 : ps -ef | grep httpd
b) chkconfig --list 将所有服务都列出来
httpd 0:关闭 1:关 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
如果想要开机自启动,使用chkconfig httpd on 将httpd的2, 3, 4, 5都置为on
c) 设置开机自启动: chkconfig 服务 on
d) 查看端口号: netstat -nlp | grep 4517
27. 实时查看文件内容
(1) tail -f xxx.log
(2) tail -F xxx.log <==> tail -f + -retry
情景:在生产上一般保留11份大小固定(比如200m)的log,某个窗口一般第一个log文件满了之后,
会做mv xxx.log xxx1.log操作,touch xxx.log, 此前实时监控(tail -f)xxx.log的窗口无法再继续监控,但是如果使用tail -F就可以继续监控
28. 命令是怎样找到的
(1)根据linux的$PATH (必须是大写)得到命令的所在目录
注: linux是以:来分隔
eg. /usr/local/bin:/bin:/usr/bin:/usr/local/sbin
(2) 从左往右用 ll + path/命令 依次寻找知道找到代表该命令的文件
(3) 如何找到命令位置: which + 命令
综上所述,一个新命令必须先配置$PATH
29. 寻找文件的位置
(1) 全局搜索: find / -name '*abc*': 从根目录寻找名字含有abc的文件
(2) 从当前目录搜索: find ./ -name '*abc*'
(3) 从指定目录搜索: find /tmp -name '*abc*'
30. vi
(1) 三种模式
a) 命令模式、编辑模式、尾行模式
b) 三种模式之间的转化
i) 命令模式与编辑模式
~ 命令模式按i键进入编辑模式
~ 编辑模式按esc键会命令模式
ii) 命令模式与尾行模式
~ 命令模式按 shift + ":" 进入尾行模式
c) 三种模式具体命令
i) 命令模式:
~ gg: 跳转到第一行第一个字符
~ G: 跳转到最后一行的第一个字符
~ shift + $: 从行首跳到行尾
~ dd: 删除当前行
~ dG: 删除当前行及以下所有行
~ ndd: 删除光标以下的n行
iii) 尾行模式
~ q!: 强制退出
~ wq: 保存退出
~ wq!: 强制保存退出(可以保存修改read only文件)
d) 如何清除一个文件
~ gg + dG
~ cat /dev/null > henry.log
不要用echo '' > henry.log, 这样还会使文件又一个空行
注: 修改生产上面配置文件和其他同事的文件
先cp备份一份,再进行编辑
e) vi 设置行号: ":"set nu
f) vi取消行号: ":"set nonu
g) vi 查询: ":/" + 需要匹配的字符,按空格之后相应的字符便会高亮显示,按n是下一行,N是上一行
h) 跳转到任意一行: 在尾行模式下,首先输入set nu显示行号,然后输入行号,这时光标就会跳转到相应的行上
31. 上传和下载
(1) 上传指 : win ===> linux rz
下载指 : linux ===> win sz
注:由于日志文件较大,在linux服务器上打开耗时,传到windows之后,瞬间打开
32. 查看文件大小与文件夹大小
(1) 查看文件大小
a) ll -h: eg. -rwxr-xr-x. h henry henry 31K 2月 31 25:78 henry.sh
b) du -sh: eg. 32K henry.sh
(2) 查看文件夹大小
a) du -sh
33. 系统情况命令
(1) 查看内存: free -m(m 代表 mb)
free -g
~ eg. total used free shared buffers cached
Mem: 7893 780 7112 4 48 495
如果free很少,但是buffer+cache很多,说明还可以使用
(2) 查看硬盘: df -h :
~ /boot 引导目录
~ swap 划分2G作为内存
~ / 根目录挂载点
~ /dev/shm
(3) 系统负载: top
eg. 21:10:36 up 8:57, 6 users(什么时候开机,启动多长时间, 几个用户使用)
load average: 0.53, 0.47, 0.39
1min 5min 15min
如果数字大于10,说明机器繁忙
34. 压缩解压
(1)"zip -r henry.zip henry/* "
将henry文件夹压缩成henry.zip
"tar -czf henry.tar.gz henry/*"
将henry文件夹压缩成henry.tar.gz
(2) 解压:
~ unzip henry.zip
~ tar -xvzf henry.tar.gz