一、安装
1.1安装visualbox或者VMware
1.2安装centos或者Ubuntu
二、远程链接
2.1使用ifconfig命令查看IP地址
2.2使用IP地址进行远程链接(xshell工具 - 远程链接,远程命令,xftp工具 - 远程传输文件)
2.3没有使用教程里面老师提供的工具,在网上有人推荐了一款开源工具Tabby,感觉比较简单,可以直接ssh链接之后直接传输文件,目前测试运行良好
三、文件和用户操作
3.1vi和vim快捷键
3.1.1正常模式下,可以使用快捷键
yy - 复制(把一行内容复制,需要使用p来进行粘贴出来,前面加上数字,表示从改行开始复制指定行数)
dd - 删除(删除一行内容,前面加上数字,表示从改行开始删除指定行数)
gg - 光标跳到首行
G - 光标跳到末行
5G - 光标跳到第5行
u - 撤回操作
3.2.2命令模式下,可以保存退出
:q - 不保存退出
:wq - 写入并退出
:q! - 修改后不保存强制退出
set nu - 设置显示行号
set nonu - 设置不显示行号
3.2文件
mkdir 目录 - 创建文件夹
touch 目录/文件名 - 创建文件
rm 目录/文件名 - 删除文件
cp 目录1/文件名 目录2/文件名 把文件1复制到文件2
pwd 显示当前工作目录
3.3用户
useradd userName - 创建用户,这种创建方法会在家目录创建一个该用户的文件夹
useradd -d 目录 userName - 创建用户时指定目录(这种方式创建时,不能使用已经存在的目录)
passwd userName - 给用户设置/修改密码
userdel userName -删除用户(保留用户文件夹)
userdel -r userName - 删除用户(同时删除用户文件夹,实际中一般不用)
id userName - 查看用户信息
su - userName 切换用户
exit - 切换用户之后回到原来的用户
who am i - 查看当前用户
3.4用户组
groupadd groupName - 创建用户组
groupdel - 删除用户组(只有在用户组里面没有用户的时候可以删除)
useradd -g groupName userName - 创建用户,同时指定用户组
3.5用户配置文件
/etc/passwd - 存放用户信息
/etc/group - 存放用户组信息
/etc/shadow - 存放密码信息
四、操作指令
4.1 切换运行级别(/etc/inittab)
0 - 关机
1 - 单用户(找回root密码)
2 - 多用户无网络服务
3 - 多用户有网络
4 - 保留级别
5 - 图形界面
6 - 重启
4.1.2 语法
init [0123456]
4.2 查看命令使用方法
man 命令
help 命令
4.3 文件操作
4.3.1 ls [目录] - 查看指定目录下面的内容,如果后面不填目录,则查看当前目录,
使用-a查看所有内容,包含隐藏内容
使用-l表示以列表的形式查看
4.4 pwd - 查看当前工作目录
4.5 cd - 切换工作目录
cd [目录] - 切换到指定目录
cd ~ - 切换到当前用户的家目录
cd - 切换到当前用户的家目录
绝对路径和相对路径
绝对路径,从/开始,相对路径,从当前工作目录开始
. - 表示当前目录
… - 表示当前目录的上一级目录
4.6 创建目录
mkdir [目录] - 创建指定目录
当需要创建的目录中有中间多级目录不存在时,需要用使用 -p 选项
4.7 删除目录
rmdir [目录] - 删除指定目录
如果要删除的目录不为空,需要使用rm -rf [目录]
4.8 创建文件
touch [路径+文件名] - 创建一个空文件(可以同时创建多个,空格隔开就可以)
4.9 拷贝命令
cp [选项] src dest 拷贝src到dest
常用选项:-r - 递归拷贝整个文件夹
强制拷贝,不询问是否覆盖,默认覆盖:\cp
4.10 删除目录或文件
rm -rf [目录名] - 删除目录
rm [文件名] - 删除文件
-r 表示递归删除整个目录下面的内容,删除目录必须使用
-f 表示强制删除,不提示
4.11 移动文件
mv [目录1/文件1] [目录2/文件1] - 移动目录1下的文件到目录2下,如果第二个里面只有目录名,则使用原文件名,如果指定了文件名,则在移动的同时重命名
4.12 查看文件内容
cat - 只读查看,无法写入
常用选项: -n - 显示行号
通常加上| more,方便浏览
more - 一个基于vi编辑器的文本过滤器,以全屏幕方式按页显示文本文件的内容;常用快捷键如下:
less - 分屏查看文件内容,与more类似,支持显示各种终端,并不是一次加载全部内容,而是根据需要显示要加载的内容,对于大文件有较高的效率;常用快捷键如下:
4.13 > 输出重定向和>>追加
基本语法
ls -l > [文件名] - 将当前列表信息写入文件(如果文件原来有内容,则覆盖原来的内容;如果文件不存在,则创建文件)
ls -l >> [文件名] - 将当前列表信息追加写入到文件(如果文件原来有内容,则追加在原来的内容的后面;如果文件不存在,则创建文件)
cat [文件1] > [文件2] - 将文件1的内容写入文件2
cat [文件1] >> [文件2] - 将文件1的内容追加写入文件2
echo "文本" > [文件] - 将文本内容写入到文件
echo "文本" >> [文件] - 将文本内容追加写入到文件
cal - 显示日历
4.14 查看命令
echo - 直接输出内容
echo $PATH - 输出环境变量
echo hello - 输出hello
head -n 5 [文件] - 显示文件前5行的内容(-n 5 可以省略,如果不加,默认显示前10行)
tail -n 5 [文件] - 显示文件最后5行的内容(-n 5可以省略,如果不加,默认显示最后10行)
tail -f [文件] - 可以用来实时监控文件的更新
4.15 软链接命令(类似快捷方式)
ln -s [目录/文件] [链接名]
ln -s /root linktoroot
删除软链接:rm -r [软链接名]
history 查看历史命令
history 5 查看最后5条历史命令
!5 - 执行历史命令里面的第五条
4.4 日期命令
data - 显示当前日期和时间
date +"%Y-%m-%d" - 按照引号里面的格式显示日期
date -s "2022-01-01 00:00:00" 把系统时间设置成后面的时间
cal - 显示日历
cal 2020 - 显示2020年的日历
5 查找命令
5.1 find [路径] [选项] [条件]
路径 - 要在哪个路径下面查找
选项 - ① -name 按照名字查找
② -user 按照文件所属用户查找
③ -size 按照文件大小查找 +n 大于n; -n 小于n; n 等于n
示例:
find /home -name test.txt 查找home目录下文件名为test.txt的文件
5.2 locate命令
利用事先建立的系统中所有文件名称和路径的locate数据库查找,无需遍历整个文件系统,所以速度极快
查找文件所在路径,速度很快,需要先更新数据库
updatedb 先更新数据库,需要root权限
locate test.txt 查找test.txt文件所在路径
注:如果执行提示command not found,可以尝试安装locate,yum install locate
5.3 grep命令
需要结合管道符使用
grep [选项] [查找内容]
常用选项:
① -n 显示行号
② -i 不区分大小写
例:
cat test.txt | grep -n java 查找test.txt文件中java文本所在行(区分大小写)
cat test.txt | grep -ni java 查找test.txt文件中java文本所在行(不区分大小写)
6 压缩命令
6.1 gzip和gunzip(实际使用较少,原来的文件会被删除,只保留压缩后的文件)
gzip [文件名] - 把文件压缩成gz压缩文件
例:gzip a.txt - 执行后生成a.txt.gz,a.txt文件被a.txt.gz替换
gunzip [压缩文件名] - 把压缩文件解压
例:gunzip a.txt.gz - 把a.txt.gz文件解压到当前目录,压缩文件被删除,只保留解压后的文件
6.2 zip和unzip(常用于打包编程项目)
zip [-r] xxx.zip [文件/路径名] - 把指定的文件/路径压缩成名为xxx.zip的压缩文件
其中,-r是代表递归压缩,如果别压缩的是一个目录,需要使用-r选项
unzip -d [路径名] [压缩文件名] - 把指定压缩文件解压到指定路径
6.3 tar
tar [选项] xxx.tar.gz [要压缩的文件名] - 把要压缩的文件压缩成xxx.tar.gz的压缩文件
常用选项
一般都组合使用,打包压缩时使用-zcvf
解压时使用-zxvf
例:
tar -zcvf code.tar.gz code1.txt code2.txt - 把code1.txt和code2.txt打包压缩成code.tar.gz文件
tar -zcvf dircode.tar.gz code - 把code目录打包压缩成dircode.tar.gz
tar -zxvf code.tar.gz - 把code.tar.gz文件解压到当前目录
tar -zxvf dircode.tar.gz -C [路径名] - 把dircode.tar.gz解压到指定路径
五、组和权限管理
5.1 组管理
对于文件来说,有三个属性
① 所有者 - 文件属于谁
② 所在组 - 文件所在的组
③ 其他组 - 除了所有者和所在组之外的组
5.1.1
查看所有者和所在组
ls -ahl
5.1.2 创建用户和组
创建一个police组,创建一个用户wusong,放到用户组police
groupadd police
useradd -g police wusong
使用wusong登录,然后创建一个文件apple.txt
然后查看apple.txt文件的所有者和所在组
5.1.3 修改文件所有者和所在组
修改文件apple.txt所有者
chown [新所有者] [文件名] 把文件的所有者改成新所有者(需要root权限)
修改文件apple.txt所在组
chgrp [组名] [文件名] 把文件所在组修改成指定组
5.1.4 修改用户所在组
usermod -g [组名] [用户名] 把用户切换到指定组
5.1.5 修改文件读写权限
首先要清楚这里查看文件结果所代表的含义
第1位代表类型
d 表示是一个目录
- 表示是一个文件
l 表示是一个软链接
c 表示是一个字符设备(键盘、鼠标)
b 表示是一个块文件(硬盘)
第2-4位代表属主对该文件或目录的读®写(w)执行(x)权限
第5-7位代表属组对该文件或目录的读®写(w)执行(x)权限
第8-10位代表其他组用户对该文件或目录的读®写(w)执行(x)权限
若对应位为-,则表示没有对应权限
第11位开始的数字表示文件的硬链接数量(如果是目录,则代表目录的子目录数量)
随后的空格后面内容分别表示属主和数组
后面的日期时间表示最后修改的时间
5.1.5.1 用数字修改各个用户的读写执行权限
r=4, w=2, x=1
例如要给读写权限就是rw=4+2=6
语法:
chmod xxx [文件名]
其中xxx为3个数字,第一个代表属主权限,第二个代表数组权限,第三个代表其他用户权限
例如
chmod 741 /home
表示给/home属主读写执行权限,给所属组用户读权限,给其他用户执行权限
5.1.5.2 使用字母代表给文件或目录修改权限
语法:
chmod u=rwx,g=rx,o=r /home
其中,u代表属主,g代表数组,o代表其他组用户,a代表所有用户
=表示将权限重置为等号后面的权限
+表示添加权限
-表示取消权限
六、任务调度
有些任务需要定期执行,此时可以使用任务调度设置定时执行
crontab -e //编辑定时任务
crontab -l //查看定时任务
crontab -r //删除所有定时任务
service crond restart //重启定时服务
例:每隔一分钟将日期保存到/home/mydate文件
crontab -e
* * * * * date >> /home/mydate
语法分析:
前面的5个*分别代表:
位置 | 含义 |
---|---|
第一个* | 分钟 |
第二个* | 小时 |
第三个* | 每月的第几天 |
第四个* | 每年的第几月 |
第五个* | 每周的第几天(0和7都代表星期日) |
每一位可以使用的格式及其含义(以分为例,月周日时同理):
格式 | 含义 |
---|---|
* | 表示每一分钟 |
1 | 表示第1分钟 |
2,4,6 | 表示第2分钟,第4分钟,第6分钟(逗号表示不连续) |
2-10 | 表示第2到第10分钟(-表示连续) |
*/1 | 表示间隔1分钟 |
后面的语句可以是简单的可以直接执行的语句,也可以是可执行文件,当指令比较简单时,可以直接写语句加在后面,如果比较复杂,就写出文件加载后面
例如:
*/5 * * * * /home/mytask.sh
表示每隔5分钟执行一次/home/mytask.sh这个文件(注意:当把比较复杂的脚本或者代码放到文件里面定时启动时,一定要确保这个文件是可执行的文件,也就是确保有执行权限)
七、磁盘管理
7.1 Linux硬盘说明
Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本都是SCSI硬盘
7.1.1 IDE硬盘
驱动器标识符一般为hdx~,其中:
hd表示分区所在的设备类型
x表示盘号(a为主盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘)
~代表分区用数字1,2,3,4…表示1-4为主分区,后面的是逻辑分区
7.1.2 SCSI硬盘
驱动器标识符一般为sdx~,其中:
sd表示分区所在设备类型
其他含义和IDE硬盘相同
7.2 给Linux增加一个硬盘
补充:lsblk -f 命令可以查看当前硬盘分区挂载情况
- 添加硬盘(如果是虚拟机就直接创建虚拟硬盘,如果是服务器,要加真实硬盘)
- 分区 fdisk /dev/sdb 执行后会有提示,选择m查看指令,选择n新增分区,继续选择p(增加主分区)或e(扩展分区)
- 格式化 mkfs -t ext4 /dev/sdb1 其中:-t ext4 表示格式化成ext4格式,格式化之后lsblk -f 查看磁盘挂载情况可以看到sdb1这个分区有了uuid
- 挂载 mount /dev/sdb1 /home/newdisk 将/sdb1挂载到/home/newdisk
- 自动挂载,使得重启后挂载依旧有效(永久挂载)修改/etc/fstab 后重启
7.3 卸载
umount /dev/sdb1 //umount 分区路径
umount /home/newdisk //umount 挂载文件路径
umount 分区路径
或
umount 文件名
就可以卸载挂载的分区了
7.4 磁盘查看指令
7.4.1 查看磁盘整体的使用情况
df -h
-h 表示用k,m,g等单位显示文件或目录大小
7.4.2 查看指定目录的磁盘占用情况
du -ach [目录]
-a:表示包含文件
-c:表示统计汇总
-h:带计量单位
-s:指定目录占用大小汇总
–max-depth=1:查找深度
7.4.3 查看指定目录下的文件或者文件夹数量
ll /home | grep "^d" | wc l //查看/home路径下的目录数量
ll -R /home | grep "^d" | wc l //递归查看/home路径下的目录数量
ll /home | grep "^-" | wc l //查看/home路径下的文件数量
ll -R /home | grep "^-" | wc l //递归查看/home路径下的文件数量
tree /home //以树状视图显示/home路径(需要安装tree)
八、网络配置
8.1 查看网络IP和网关
ifconfig
8.2 查看网络联通情况
ping ip
8.3 修改IP配置文件
文件路径
/etc/sysconfig/network-scripts/ifcfg-enp0
使用vim打开上面这个文件进入编辑
设置:
ONBOOT=yes //启用boot
BOOTPROTO=static //以静态方式获取IP,可选项为[none|static|boottp|dhcp]
IPADDR=192.168.56.3 //ip地址
GATEWAY=192.168.56.1 //网关地址
DNS!=192.168.56.1 //dns地址,和网关地址相同即可
修改后保存退出
然后重启网络服务
service network restart
九、进程管理
9.1 进程查看
Linux中,每个执行的程序(代码)都是一个进程,每一个进程都会有一个ID号
每一个进程都对应一个父进程
进程分为前台和后台两种,后台进程又称守护进程,屏幕上看不到
一般的系统服务都是后台进程,直到关机才会结束
查看命令
ps -aux 查看所有进程
ps -aux | less 查看所有进程,分页显示
ps -aux | grep sshd 查看sshd相关进程
-a 表示查看所有进程
-u 表示以用户的格式显示进程信息
-x 表示显示后台进程运行的参数
其中:
USER 表示用户名称
PID 表示进程号
%CPU 表示cpu占用情况
%MEM 表示内存占用情况
VSZ 表示占用的虚拟内存大小(单位:k)
RSS 表示进程占用的物理内存大小(单位:k)
TTY 表示终端名称
STAT 表示进程状态;其中(S表示睡眠,R表示正在运行,s表示该进程是会话的先导进程,N表示比普通进程的优先级更低,D表示短期等待,Z表示僵死进程,T表示被跟踪或者被停止)
START 表示进程启动的时间
TIME 表示进程使用cpu的总时间
COMMAND 启动进程所用的命令和参数,如果过长会截断显示
查看父进程
ps -ef 查看所有进程的父进程
ps -ef | grep sshd 查看sshd的父进程
9.2 终止进程
语法:
kill 进程ID
killall 进程名
选项:
-9 表示强制终止
实例:
9.2.1 终止一个用户的远程登录
- 先查看所有的远程登录进程,找到要终止的用户登录的进程信息
- 使用kill 进程号命令终止该进程
例:
ps -aux | grep sshd //查看远程登录相关进程,回车后显示所有远程登录进程,找到要终止的进程ID假设为6220
kill 6220 //终止进程号为6220的进程
9.2.2 终止sshd远程登录服务,适当的时候重启
ps -aux | grep sshd //找到sshd服务的进程ID假设为6120
kill 6120 //终止任务号为6120的进程
9.2.3 终止多个进程,比如不同用户启动了多个vim进程
killall vim //终止所有名字为vim的进程
9.2.3 终止一个终端进程
ps -aux | grep bash //查看终端进程,回车后显示所有终端进程,找到要终止的任务ID假设为6320
kill -9 6320 //强制终止任务号为6220的进程
9.3 以树状视图查看进程
pstree -p 以树状视图显示进程,-p表示显示进程的pid
pstree -u 以树状视图显示进程,-u表示显示进程的用户
9.4 服务管理
9.4.1 服务管理命令
service 服务名 操作[stop | start | restart | reload | status]
centos7之后service命令可能就不支持了,可以使用systemctl命令
例如:
service iptables status //可以查看当前防火墙的状态
在Windows命令提示行或者Linux终端使用telnet ip port 可以测试该IP的对应端口是否开放
使用service 服务名 操作 对服务进行的启动,停止等操作立即生效,但是重启后会回归到以前的设置
9.4.2 查看所有服务
9.4.2.1 使用setup查看(有些系统不支持)
9.4.2.2 使用ls命令查看/etc/init.d 路径
ls -l /etc/init.d/
9.4.3 chkconfig命令
9.4.3.1 查看所有服务在不同运行级别下的自启动状态
chkconfig --list //查看所有服务的状态
chkconfig mysql --list //查看mysql服务的状态
chkconfig --list | grep mysql //和上面语句作用相同
9.4.3.2 使用chkconfig修改某服务在指定运行级别的自启动设置
chkconfig --level 2 mysql off //把mysql服务在2这个运行级别设置为关闭(也就是不自动启动)
chkconfig mysql off //把所有运行级别下mysql服务都设置为不自动启动
chkconfig修改设置后要重启设备才能生效
9.5 动态监控进程和网络状态
9.5.1 动态监控进程
命令top
选项:
-d 指定刷新的秒数
-i 不显示僵死进程
-p 只显示指定的进程号的进程,后面加对应的进程id可以多个,用,隔开
进入监控后可以使用交互操作对显示的进程进行筛选或者排序
u 表示筛选用户,输入u然后输入用户名回车,即可筛选指定用户的进程
P 根据cpu占用情况排序;默认就是按照这个排序
M 根据内存占用情况排序
N 根据进程id排序
k 可以终止指令,输入k后输入要终止的进程id即可终止对应id
9.5.2 动态监控网络状态
命令netstat
选项
-an 按照一定顺序排序显示
-p 显示哪个进程在调用
netstat -anp | grep sshd //显示所有sshd进程的网络状态