Linux
使用了CentOS 6.8系统
主要使用了Ubuntu 20.10系统
Oracle VM Virtual Box
Linux
CentOS 6.8
CentOS 7
Ubuntu 20.10
安装系统,配置系统
- 下载镜像iso文件
- 安装系统
- 配置系统分区, 一个主分区三个配置分区
文件目录系统
有且只有一个根目录 /
目录都是预先规划好的
远程操作
先将VirtualBox 的网络设置改为桥接,这样就可以使用本地同网域ip访问
可用工具:
- XShell (远程操作)
- XFtp5 (远程上传下载)
- MobaXterm (多功能)
- …
Ubuntu 需要先安装ssh服务
可以通过以下指令确认是否安装
1 | ssh localhost |
显示ssh: connect to host localhost port 22: Connection refused
就是没有安装
通过以下指令安装
1 | sudo apt-get install openssh-server |
默认会自动启动
通过ps -e | grep ssh
查看,或者service ssh status
之后可以在/etc/ssh/sshd_config
下修改配置
参考:
使用ssh操作22号端口即可
文件管理就用sftp一样访问22号端口
vi vim
vi 是文本编辑器, vim是vi的增强版本
vim的三种常见模式:
- 正常模式
- 进入文档起初就是正常模式
- 可以使用快捷键
- 插入模式
- 使用 i , I , o , O , a , A , r , R 进入
- 可以输入内容
- 命令行模式
- 提供相关指令, 完成存盘, 读取, 替换, 离开 vim 编辑器, 显示行号等
快捷键
正常模式:
- yy复制当前行, 5yy复制当前以及当前行下的一共5行
- dd删除当前行, 5dd删除当前以及当前行下的一共5行
- p黏贴
- G 到文档末行, gg 到文档首行
- u 撤销未保存的操作
- 行号 然后按G / gg, 将光标移动到指定行
命令模式:
- / sss , 在当前文件中搜索sss, 正常模式下输入n就是查找下一个匹配的关键字
- set nu 开启行号, set nonu 关闭行号显示
开机重启注销
- shutdown
shutdown -h now
表示立即关机shutdown -h 1
1分钟后关机shutdown -r now
立即重启
- halt 直接使用, 和关机效果一样
- reboot 重启
- sync 同步, 把内存数据保存到磁盘上
- 每次关机重启前都应该先执行此指令
用户登录注销
最好不要以管理员账户直接登录
通过普通用户输入su
指令可以切换到管理员
logout
/exit
注销, 就关闭了远程连接- 在图形界面(运行级别)是无效的
用户管理
- 组对应权限, 每个组有各自的home目录
- Linux是个多用户管理系统, 任何一个要使用系统资源的用户都需要先向管理员申请账号, 然后以对应账户登录系统
添加用户: (需要root权限)
useradd [选项] 用户名
在
/home
目录下面可以查看用户存放的位置ubuntu 下 新建用户需要使用 -m 选项才会创建home下目录
默认自动为新用户创建了一个用户组
-d
指定目录useradd -d <directory> <username>
指定home目录
passwd <username>
指定密码useradd -g <groupname> <username>
创建用户的时候指定组, 不指定默认创建与用户名相同的组
删除用户:
userdel <username>
这样会保留home目录userdel -r <username>
包括home目录也会被删除- 一般不删除home目录
查询用户信息:
id <username>
- 如果无此用户, 返回无此用户
- uid – 用户id
- gid – 组id
- groups – 组
切换用户:
su - <username>
切换用户exit
退回原来的用户whoami
查看当前是什么用户
用户组:
groupadd <groupname>
创建组groupdel <groupname>
删除组usermod -g <groupname> <username>
切换用户的组/etc/passed
用户配置文件(用户信息)/etc/group
组信息配置文件/etc/shadow
口令信息配置文件
实用指令
指定运行级别
系统运行级别配置文件: /etc/inittab
, CentOS7以后以及弃用
- 0: 关机
- 1: 单用户, 找回丢失密码
- 2: 多用户无网络
- 3: 多用户有网络, 用的做多
- 4: 保留
- 5: 图形级别
- 6: 重启
命令: init <0-6>
面试题:
如何找回丢失的root密码?
进入单用户模式, 然后修改root密码, 因为进入单用户模式不需要root密码
此处使用CentOS 6.8
帮助指令
man <ls>
查看ls指令怎么使用help <cd>
查看cd的功能
文件目录类指令
pwd
当前绝对路径ls
cd
mkdir
rm
,-r
代表所有文件,-f
代表强制不提示rmdir
只能删除空目录, 有内容需要使用rm -rf <dir>
touch <filename>
创建空文件, 可以跟着同时创建多个文件cp <options> <file source> <destination dir>
拷贝,-r
代表递归拷贝,\cp
强制覆盖并且不提示mv <old filename> <new filename>
重命名mv <old dir> <new dir>
cat
预览, -n显示行号more
以全屏方式按页显示文件内容- 空格下一页
- ctri + B上一页
- Enter下一行
less
按需加载文件, 快捷键与more差不多, 但是more直接加载好了所有文件内容>
输出重定向, 覆盖写入文件>>
追加echo
head
默认查看文件开头十行, -n自定义具体几行tail
默认显示文件后10行, -f 实时追踪文件更新ln -s <link dir> <link name>
软连接指令, 类似快捷方式, 但是cd进去使用pwd查看目录仍然是软连接的目录history
查看历史指令, 可以加数字, 代表查看之前多少个指令!<number>
代表执行历史编号为178的指令
时间日期类指令
date
指令, 显示当前时间date "+%Y %M %D %H %M %S"
查看年月日时分秒date -s <time>
设置时间
cal
以日历方式显示时间, 后面加年份可以显示全年日历
搜索查询指令
find
find <dir> <options> <description>
按照特定指令查找- 比如
find /home -name a.txt
locate
通过建立locate的数据库实现快速查找
updatedb
创建locate数据库locate <string>
grep
grep <options> <string> <source file>
- 案例:
cat hello.txt |grep -ni yes
在cat预览中找出yes关键词出现的地方-n
显示行号,-i
不区分大小写
压缩解压指令
gzip/gunzip
gzip <filename>
压缩, 压缩完不保留源文件gunzip <filename>.gz
解压gz文件
zip/unzip
zip <options> <filename>
-d <dir>
指定解压到指定目录-r
递归压缩, 压缩目录
tar
- 打包指令, 最后打包的文件是tar.gz
-c
打包成tar文件-v
显示详细信息-f
指定压缩后的文件名-z
打包同时压缩tar -zcvf a.tar.gz al.txt a2.txt
将多个文件打包压缩成a.tar.gz, 也可以操作整个目录tar -zxvf a.tar.gz
解压到当前目录tar -zxvf <filename> <dir>
解压到指定目录, 前提是该目录事先存在
组管理和权限管理
LInux中每个用户都必须有一个组
每个文件都有所有者, 所在组, 其他组
所有者
一般文件的创建者就是文件的所有者
ls -ahl
h是human的意思, 可以显示组信息chown <username> <filename>
change owner改变文件的所有者- 组不会跟着改变, 所以所有者不一定对应所在组
-R
修改目录下所有文件
chgrp <group name> <filename>
change group 修改文件所在组usermod -g <groupname> <username>
切换用户的组usermod -d <dir> <username>
切换用户登录的初始目录
权限管理
使用ls -ahl
查看
1 | -rw-r--r-- 1 root root 0 Dec 21 16:28 ok.txt |
权限字符每一位所代表含义不一样
-
文件类型, (d, -, l, c, b)rw-
所有者权限User- r, read
- w, write
- e, excute
r--
文件所在组的用户的权限Groupr--
文件其他组的用户的权限Other1
如果是文件, 表示硬链接的个数, 如果是目录表示该目录的子目录个数
之后依次是:
- 所有者
- 所在组
- 文件大小
- 目录是4096
- 时间
- 文件名
修改权限
例子:
1 | chmod u=rwx,g=rx,o=rx abc |
分别设置了所有者, 组用户, 其他组用户的权限
给用户和组用户添加或者删除权限
1 | chmod u-x,g+w abc |
给所有用户添加权限
1 | chmod a+r abc |
使用数字变更权限
规则: r=4, w=2, x=1, 其实就是二进制
例子: rwx=4+2+1=7
chmod u=rwx,g=rx,o=x <file/dirname>
相当于chmod 751 <file/dir name>
任务调度
定时调用脚本或者代码
crontab <options>
每一分钟就执行一次:
1 | */1**** ls -l /etc/ >> /tmp/to.txt |
五个占位符说明:
第一个* : 一个小时中的第几分钟
第二个* : 一个小时中的第几小时
第三个* : 一个月当中的第几天
第四个* : 一年中的第几个月
第五个* : 一周中的星期几
-
可以代表时间范围
,
代表不连续的时间
*
代表任何时间
*/n
代表每隔多久执行一次
crontab -r
终止任务调度crontab -l
列出当前有那些任务调度service crond restart
重启任务调度
磁盘分区
分区基础:
- mbr分区
- 最多支持4个主分区
- 系统只能安装在主分区
- 扩展分区要占一个主分区
- MBR最大支持2TB, 拥有最好兼容性
- gtp分区
- 无限主分区, 但操作系统可能限制, windows最多128
- 最大18EB
- windows7 64以后支持gtb
windows下的分区:
- 系统盘就是主分区
- 其他磁盘就是扩展分区, 也就是逻辑分区
Linux分区:
- 归根结底只有一个根目录/, 每个分区都是用来组成文件系统的一部分
- linux采用”载入/挂载, mount/umount”的处理方式, 将分区和目录联系起来
Linux 硬盘分IDE硬盘和SCSI硬盘:
IDE硬盘标识符为”hdx
“, hd表示设备类型, x为盘号(a为基本盘, b为从属盘, c为辅助硬盘, d为辅助从属盘) ““代表分区, 前四个分区用数字1-4表示, 5开始为逻辑分区SCSI硬盘为”sdx~”
lsblk -f
查看系统分区和挂载的情况
为linux增加硬盘
- 添加硬盘
- 分区
fdisk <disk root>
命令分区
- 格式化
mkfs -t ext4 /dev/sdb1
- 挂载
mount <disk root> <dir for disk>
umount
取消挂载
- 设置永久挂载, 重启不重置
- 修改挂载文件
vim /etc/fstab/
磁盘情况查询
1 | df -ach --max-depth=1 |
df -h
带计量单位- c
列出明细同时, 增加汇总值- a
含文件--maxdepth=1
深度为1
统计home目录下文件个数
1 | ls -l /home | grep "^-" | wc -l |
网络配置
指定固定ip地址
- 编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
CentOS 6.8 才适用
进程管理
每个执行的程序都成为一个进程
每个进程都对应一个父进程, 父进程可以复制多个子进程
每个进程都可能以两种方式存在, 前台和后台, 前台就是用户可以在屏幕上看到可以操作的, 后台就是指实际在操作但是屏幕上看不到的进程
系统服务一般都是后台进程, 常驻到关机结束
基本指令:
ps
查看进程-a
显示当前终端所有进程信息-u
以用户格式显示进程信息-x
显示后台进x程运行的参数-e
显示所有进程-f
全格式
1 | ps -aux | grep sshd |
终止进程
基本语法:
kill <options> <process number>
killall <process name>
-9
强制
树状图展示进程
pstree <options>
-p
展示PID-u
用户ID
服务管理
服务本质就是进程, 但是是后台运行的, 通常都监听某一个端口, 等待其他进程的请求
service <service name> <start|stop|restart|reload|status>
CentOS7.0 后使用systemctl
可以使用windows telnet 检查那个端口在监听
–end–