目录作用
/etc [重点]
- 所有的系统管理所需要的配置文件和子目录my.conf
/usr [重点]
- 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
/tmp
- 这个目录是用来存放一些临时文件的。
/media [重点]
- linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt [重点]
- 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。d:/myshare
/opt
- 这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。
默认为空。
/usr/local [重点]
- 这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
/var [重点]
- 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
VIM
基础命令
进入
vim 文件名
编辑模式
进入后按i
正常模式
按下Esc
用于查看文本,也可复制、粘贴、撤销、重做等
命令模式
按下Esc,再按:
用于输入指令,如:保存、运行、切换标签、切割屏幕等
保存退出
编辑完后按Esc,输入:wq
,如果是新建的,则需要命名后才能退出,输入:wq
[文件名]
强制退出
不保存内容直接退出,输入:q!
无修改退出
:q
进去后看了下,对原文件没修改,则可以使用q退出
实用快捷键
以下都是进入正常模式使用,注意区分大小写
复制
按下yy:复制光标所在行,再按p:粘贴一行
复制相同内容多行
按下yy后,在按 [数字]p
例如:9pp,粘贴9行;123456pp,粘贴123456行
删除
删除当前行dd,删除当前行及下面的行 [数字]dd
查找
/[内容]
,n跳转到下一个
例如查找fuck,/fuck
即可
显示/隐藏行号
输入:set nu
/ :set nonu
移动到首行/尾行
按下gg / G
撤销
按下u
跳转到指定行
在显示行号的前提下(方便查看),按下 [行号]+Shift+g
实操篇
关机/重启
shutdown -h now
立该进行关机
shudown -h 1
“hello, 1 分钟后会关机了”
shutdown -r now
现在重新启动计算机
halt
关机,作用和上面一样.
reboot
现在重新启动计算机
sync
把内存的数据同步到磁盘
不管是重启系统还是关闭系统,首先要运行sync
命令,把内存中的数据写到磁盘中
用户(组)操作
添加用户
useradd 用户名
:添加
passwd 用户名
:指定密码
没指定home目录,则会自动在/home/下删除用户名同名目录
删除用户
userdel 用户名
:不删除自己的home目录,即/home/用户名(建议写法)
userdel -r 用户名
:删除自己的home目录
查询用户
id 用户名
切换用户
su - 用户名
:高权限切换到低权限无需输入密码,反之需要
用户组操作
添加:groupadd 组名
删除:groupdel 组名
添加用户时直接加上组:useradd -g 用户组 用户名
修改用户的组:usermod -g 用户组 用户名
用户和组的相关文件
如用户zs
/etc/passwd 文件: 用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
zs:x:1001:1002::/home/zs:/bin/bash
/etc/shadow 文件: 口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
zs:$6$P.lwTkmp$O4VJjAGNBXOmnkkIHSbFUVTORJfONPrG:18675:0:99999:7:::
/etc/group 文件: 组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
zs:x:1002:
文件目录类
pwd 显示当前工作目录的绝对路径
ls 列出目前工作目录所含之文件及子目录
-a
显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l
除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
[root@localhost ~]# ls
[192.168.159.130:9200] 4560 anaconda-ks.cfg applog get-docker.sh json_lines logs rubydebug
[root@localhost ~]# ls -a
. [192.168.159.130:9200] anaconda-ks.cfg .bash_history .bash_profile .cshrc json_lines .pki .swp .viminfo
.. 4560 applog .bash_logout .bashrc get-docker.sh logs rubydebug .tcshrc
[root@localhost ~]# ls -l
total 20
-rw-r--r-- 1 root root 0 Apr 16 2020 [192.168.159.130:9200]
-rw-r--r-- 1 root root 0 Apr 16 2020 4560
-rw-------. 1 root root 1457 Aug 18 2019 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Apr 16 2020 applog
-rw-r--r-- 1 root root 13328 Apr 15 2020 get-docker.sh
-rw-r--r-- 1 root root 0 Apr 16 2020 json_lines
drwxr-xr-x. 3 root root 70 Mar 4 2020 logs
-rw-r--r-- 1 root root 0 Apr 16 2020 rubydebug
mkdir 创建目录
mkdir [选项] 要创建的目录
选项
-p :创建多级目录
touch 创建空文件
touch 1.txt 2.txt 3.txt
cp 复制
cp [选项] 原文件(夹) 目标文件夹
选项
-r :递归复制整个文件夹
强制覆盖不提示的方法:\cp
rm 删除
rm [选项] 要删除的文件或目录
选项
-r :递归删除整个文件夹
-f :强制删除不提示
mv 移动文件与目录
mv oldNameFile newNameFile
(功能描述:重命名)
mv /temp/movefile /targetFolder
(功能描述:移动文件)
mv -f 1.txt 2.txt
可以强制覆盖已存在的,不会弹出提示
cat 显示文件内容
cat [选项] 要查看的文件
选项
-n :显示行号
如需分页查看
请在末尾加上| more
(一次性加载全部内容),使用后可以用以下快捷键
- Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
- V 调用vi编辑器
- q 退出more
less 显示内容
根据显示需要加载内容,对于显示大型文件具有较高的效率,比more好
less 要查看的文件
空格:向下翻动一页;
q:退出
>和>> 覆盖或追加文本
- ls -l >文件(功能描述:列表的内容写入文件a.txt中(覆盖写))
- ls -al >>文件(功能描述:列表的内容追加到文件aa.txt的末尾)
- cat 文件1 > 文件2(功能描述:将文件1的内容覆盖到文件2)
echo 输出内容到控制台
echo 内容>> 文件
将echo后的内容追加到文件里
echo $PATH
输出环境变量
tail 用于输出文件中尾部的内容
默认输出尾10行
tail 文件
(功能描述:查看文件头10行内容)tail -n 5 文件
(功能描述:查看文件头5行内容,5可以是任意行数)tail -f 文件
(功能描述:实时追踪该文档的所有更新,常用来查看日志)
ln 软链接,存放了链接其他文件的路径
ln -s [原文件或目录] [软链接名]
(功能描述:给原文件创建一个软链接)
history 查看已经执行过历史命令,也可以执行历史指令
history 10
//显示最近10条终端执行过的命令
显示后,可以用!5
执行显示第5条的指令
find 在指定目录下查找文件
find [搜索范围] [选项]
find / -name 1.txt
选项
-name 文件名
:按照指定的文件名查找模式查找文件
-user 用户名
:查找属于指定用户名所有文件
-size 文件大小
:按照指定的文件大小查找文件
find /opt -size +20M
,find /opt -size 20M
,find /opt -size -20M
locate 快速定位文件路径
locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
语法:locate 文件名
特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
| 管道符,将前一个命令的处理结果输出传递给后面的命令处理
grep 查找文件里符合条件的字符串
grep [选项] 查找内容源文件
-n:显示匹配行及行号。
-i:忽略字母大小写
cat 1.txt | grep -n ttt
在1.txt文件里查找ttt并输出显示行号,区分大小写
cat 1.txt | grep -ni ttt
不区分大小写
tar 打包—解压缩
tar -zcvf t.gz 1.txt 2.txt
打包 1.txt,2.txt为t.gz的压缩文件
tar -zxvf t.gz
解压到当前目录
tar -zxvf t.gz -C /opt
解压到指定目录 注意C大写
组管理和权限管理
组管理
-R 如果是目录则使其下所有子文件或目录递归生效
chown 命令用于设置文件所有者和文件关联组的命令
全称change owner
chown 用户名 文件名
chown zs 1.txt
把原来1.txt所有者为root改成zs
chown newowner:newgroup file
改变用户的所有者和所有组
chown -R zs:zs fuck
递归更改fuck目录及所有子目录或文件 用户为zs,组为zs
chgrp 变更文件或目录的所属群组
chgrp 组名 文件名
chgrp zs 1.txt
把原来1.txt所在组root改成zs组
usermod 改变用户所在组
usermod -g 组名 用户名
权限管理
输入命令ll
后显示的列表之一如下,它代表的含义是什么呢
rwx权限详解
rwx作用到文件
- [ r ] 代表可读(read): 可以读取,查看
- [ w ] 代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [ x ] 代表可执行(execute):可以被执行
rwx作用到目录
- [ r ] 代表可读(read): 可以读取,ls查看目录内容
- [ w ] 代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ] 代表可执行(execute):可以进入该目录
可用数字表示为: r=4,w=2,x=1 因此rwx=4+2+1=7
修改权限
chmod 修改文件或者目录的权限
第一种方式:+ 、-、= 变更权限
u:所有者g:所有组o:其他人a:所有人(u、g、o的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
给所有者全部权限,所有组读执行或进入权限,其他执行或进入权限
chmod o+w 文件目录名
给其他人添加写权限
chmod a-x 文件目录名
给所有人移除执行或进入权限
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
定时任务
crontab
进行定时任务的设置
crontab [选项]
选项
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab –e命令。
接着输入任务到调度文件如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令
分区
lsblk 查看所有设备挂载情况
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 30G 0 part /
├─sda3 8:3 0 20G 0 part /data
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 3G 0 part [SWAP]
[root@localhost /]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 40e0595f-f145-4d6b-9748-716bf03c97b4 /boot
├─sda2 xfs 94121cd9-f036-487e-a8c2-1c4d1fcd343a /
├─sda3 xfs d0525e16-244e-4c70-9ee3-ec3fd67caa47 /data
├─sda4
└─sda5 swap 13936418-1c12-4b45-9a19-d04c4059a09e [SWAP]
磁盘情况
查询
df -lh (disk free) 查询系统整体磁盘使用情况
du (disk usage)查询指定目录的磁盘占用情况,默认为当前目录
du [选项] /目录
选项
-s指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
工作实用指令
wc (world count)是一个统计文件字词,字节,行数的命令
wc [选项] 文件
选项
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。注意,这里的字指的是由空格,换行符等分隔的字符串。
[root@localhost apache-maven-3.6.3]# wc -l README.txt
79 README.txt
统计文件夹下文件的个数 ll | grep "^-" | wc -l
统计文件夹下目录的个数 ll | grep "^d" | wc -l
统计文件夹下文件的个数,包括子文件夹里的 ll -R | grep "^-" | wc -l
ll -R=ls -lR
统计文件夹下目录的个数,包括子文件夹里的 ll -R | grep "^d" | wc -l
以树状显示目录结构 tree 目录
,不填默认当前
进程管理
显示系统执行的进程 BSD风格
ps 显示当前进程的状态
ps [选项]
-a:显示同一终端下的所有程序
-u :ps -u
以用户的格式显示进程信息;ps -u zs
指定用户的所有进程
-x:显示后台进程运行的参数
-aux:显示所有包含其他使用者的行程,显示格式如下
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O) - START: 行程开始时间
- TIME: 执行的时间
- COMMAND:所执行的指令
过滤进程
ps -aux | grep sshd
显示sshd服务
[root@localhost apache-maven-3.6.3]# ps -aux | grep sshd
root 793 0.0 0.0 112872 32 ? Ss 09:10 0:00 /usr/sbin/sshd -D
root 2113 0.0 0.0 161480 232 ? Ss 09:11 0:00 sshd: root@pts/0
root 7582 0.0 0.0 112716 964 pts/0 S+ 11:35 0:00 grep --color=auto sshd
全格式显示当前所有的进程 V风格
ps -ef
-e:显示所有进程
-f :全格式
杀死进程
kill 停止进程
kill [选项] 进程号
选项
-9 :表示强迫进程立即停止
killall 进程名称
通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
查看进程树
可以更加直观的来看进程信息
pstree [选项]
常用选项:
-p :显示进程的PID
-u :显示进程的所属用户
服务管理
service 服务名 status 检查服务状态
chkconfig 查看或给每个服务的各个运行级别设置自启动/关闭
chkconfig
查看所有服务
chkconfig | grep mysql
查看mysql服务
chkconfig --level 5 mysqld off
在运行级别为5的情况下,关闭mysqld服务
chkconfig --level 3 sshd on
在运行级别为3的情况下,开启sshd服务
动态监控进程
top
与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
top [选项]
-d 秒数:指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行的命令:
-i:使top不显示任何闲置或者僵死进程。
-p:通过指定监控进程ID来仅仅监控某个进程的状态。
交互操作说明:
P:以CPU使用率排序,默认就是此项
M:以内存的使用率排序
N:以PID排序
q:退出top
监控网络状态
netstat
netstat [选项]
选项
-an 按一定顺序排列输出
-p 显示哪个进程在调用
netstat -anp | grep sshd
查看sshd网络状态
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 793/sshd
tcp 0 36 192.168.128.130:22 192.168.128.1:51781 ESTABLISHED 2113/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 793/sshd
unix 3 [ ] STREAM CONNECTED 25221 793/sshd
unix 2 [ ] DGRAM 36829 2113/sshd: root@pts
RPM 与YUM
rpm
查询
rpm –qa|grep xx
查询已安装的rpm列表
–a选项是查询所有已经安装的软件包。
-q是查询一个包是否安装
一个rpm包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
rpm -q
软件包名:查询软件包是否安装
rpm -qi
软件包名:查询软件包信息
[root@localhost apache-maven-3.6.3]# rpm -q asd
package asd is not installed
[root@localhost apache-maven-3.6.3]# rpm -q python-firewall-0.5.3-5.el7.noarch
python-firewall-0.5.3-5.el7.noarch
[root@localhost apache-maven-3.6.3]# rpm -qi python-firewall-0.5.3-5.el7.noarch
Name : python-firewall
Version : 0.5.3
Release : 5.el7
Architecture: noarch
Install Date: Sun 18 Aug 2019 11:17:36 AM CST
Group : Unspecified
Size : 1862472
License : GPLv2+
Signature : RSA/SHA256, Mon 12 Nov 2018 11:19:12 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : firewalld-0.5.3-5.el7.src.rpm
Build Date : Wed 31 Oct 2018 06:47:03 AM CST
Build Host : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.firewalld.org
Summary : Python2 bindings for firewalld
Description :
Python2 bindings for firewalld.
卸载
rpm -e RPM包的名称
安装
rpm -ivh RPM包全路径名称
i=install 安装
v=verbose 提示
h=hash 进度条
yum
yum list | grep mysql
查询yum服务器是否有需要安装的软件
yum install mysql++.x86_64
安装指定的yum包