Linux学习笔记
文档链接:https://pan.baidu.com/s/1XKNLe0qLMk-Rj8yHzLUh6w 提取码:1234
find / -name dump.rdb #寻找dump.rdb位置 ps -ef|grep redis #查看运行状态
形象理解:有一个教师里面有很多人,张三192.168.0.10;李四192.168.0.20
-
桥接模式:和物理主机处于同一网段(如192.168.0.23),这样如果这个教师人很多的时候,会造成ip地址不够用(造成ip地址冲突)
-
NAT模式:另外一个人的系统电脑生成一个ip,一个ip仍然和教室的ip网段相同,另一个ip与教室网段不同,虚拟机的ip和这个相同
-
仅主机模式:安装的虚拟机系统是一个独立的主机,不能访问外网。
由此可以,我们一般设置为NAT模式,这样既能访问外网,也不会出现和同一网段的ip发生冲突。
在Linux世界中,一切皆文件
各个文件夹所代表的的意思
2.vi与vim的模式
vim是vi的增强版,搞懂vim就好
正常模式
我们可以使用快捷键
插入模式
输入i/I,o/O,a/A,,r/R 一般输入i 进入插入模式
命令行模式
可以使用相关指令,完成读取,存盘,离开vim,显示行号等操作
vim hello.java
:进入vim编辑界面进去后按i,进入插入模式
写入我们的文本,写好之后
按esc,然后
:或者/
进入命令模式然后wq
(代表write and quit),然后目录下就有hello.java,里面内容就是我们写的内容当然如果不想保存,就
:q!
强制退出
:q
针对于我打开看了一眼,没有做修改,看完了我想退出
vim正常模式下基本操作
yy:拷贝当前行
5yy:拷贝当前行下五行(包含当前行共5行)(数字不要用小键盘)
p:粘贴
dd:删除当前行
5dd:删除当前下5行
文件中查询某个单词:命令行下输入【/关键字】,找到后使用n切换下一个
显示/不显示行号:命令行输入set nu/set nonu
gg:快捷到文档最顶部
G:快捷到文档最底部
u:撤销
命令行输入:noh:取消刚刚查询匹配的颜色标记
定位到某一行:
1.显示行号 :set nu
2.输入行号,如20
3.按shift+g完成定位
输入数字m+回车:定位到当前行号下的数字m行
3.关机&重启指令
shutdown -h now:立即关机
shutdown -h 1 :一分钟后关机
shutdown -r now :现在重启
halt:关机
reboot:重启
sync:将内存数据同步到磁盘上
因此不论关机还是重启,首先运行sync
注销:logout 就会断开远程连接(以后不用的时候写logout,不要直接关掉)
4.用户管理
创建用户并指定密码
useradd [选项] 用户名
:创建一个用户,如果未指定组,则默认创建和用户名相同的组,默认在/home下创建对应用户名的目录
passwd 用户名
:给指定用户设置密码
useradd -d /home/custom_dir 用户名
:创建用户,并将用户的家目录定位到custom_dir(自己起的名字) 【custom_dir之前不能存在,否则创建不成功】
useradd -g 组名 用户名
:指定用户组创建用户个人理解记忆:-d就是dir -g就是group
删除用户
userdel 用户名
:删除用户,但保留用户家目录
userdel -r 用户名
:删除用户,并删除家目录
查询用户
id 用户名
:如果存在则返回如:uid=1000(nxj) gid=1000(nxj) groups=1000(nxj),否则提示用户不存在
切换用户:
在Linux中如果当前用户权限不足,可以使用su-指令,切换到更高权限的用户。
高权限往低权限切换不需要密码,反之需要密码
使用完后,用exit退出返回当前用户
su - root
su - nxj
用户组
一个用户至少属于一个组,当然他可以属于多个组,他拥有的权限,就是组权限的并集(,当然也可能单独给他指定权限)
添加一个组:
groupadd 组名
删除组:
groupdel 组名
修改用户组:
usermod -g 组名 用户名
/etc/passwd文件存放用户信息
用户名:隐藏口令(密码):用户id:组id::家目录:shell
/etc/shadow文件存放用户密码信息
/etc/group存放组信息
组名:隐藏口令(密码):组id:所属改组的用户(隐藏显示)
5.Linux实用指令
指定运行级别
0:关机
1:单用户(找回丢失密码)
2:多用户无网络服务
3:多用户有网络服务
4:保留
5:图形界面
6:重启
系统运行级别配置文件/etc/inittab
帮助文档
man [指令]:如man ls
help [指令]:如help cd
不行就百度搜,到时候自己看看菜鸟教程上写的哈
文件目录类
pwd
ls(-al)
cd ~ 回到家目录
cd .. 回到上一级目录
mkdir :(-p创建多级目录)
rmdir :删除一个空目录
rm -rf :直接删除该目录
touch hello.txt:创建一个空文件
cp a.txt d1 :拷贝a.txt到d1下(如果d1不是文件夹的话,如果d1不存在则创建一个名字为d1的文件,内容为a.txt的内容,如果d1是个文件且存在,则内容被替换为a.txt的内容)
cp -r d1 d2:将d1下目录递归拷贝到d2(主要针对于文件夹的拷贝,文件当然也可以加上-r,不过并和不加是一样的)
rm:移除文件或文件夹
-r:递归删除
-f:强制删除不提醒
mv:移动文件或者重命名
mv a.txt b.txt
重命名
mv d2/d3 d1
将d2下的d3移动和d2同级目录d1中
mv b.txt ../a.txt
将当前目录下的b.txt移动到上层并起名为a.txt
cat:查看文件内容(只读)
-n:加行号
cat -n /etc/profile | more
:其中|是管道符more为了分页显示【以cat指令打开文件并分页显示】
cat [-n] a.txt b.txt a.txt
:依次显示对应文件more:分页显示,一次加载完 ctrl+b ctrl+f 下/上一页 ; 空格下一页
less:分页显示,不一次加载完 可以输入/匹配字符(n向下,N向上);?匹配字符(n向上,N向下) pageup上一页,pagedn下一页 ; 空格下一页 ; q退出
less /etc/profile
cat /etc/profile | less
>:输出重定向(覆盖原来的内容)
>>:追加(在原来内容后追加)
cat a.txt > b.txt
:将cat a.txt展示出来的内容覆盖掉b.txt的内容
cat a.txt >> b.txt
:将cat a.txt展示出来的内容追加到b.txt的内容
ls -al >>b.txt
:将ls -al展示出来的内容追加到b.txt的内容
echo '某些自定义内容' >> b.txt
echo $PATH
:打印环境变量路径到控制台上
head
:用于显示文件的开头部分的内容,默认显示前10行
head -n 5 a.txt
:显示前5行
tail
:显示文件的末尾的内容
tail -n 5 a.txt
:显示后5行
tail -f a.txt
:实时追踪该文档的所有更新
ln:创建一个软链接(快捷方式)
ln -s 源地址 快捷
:ln -s /home/nxj/d1/d2 d3j
我cd d3j 就是cd到/home/nxj/d1/d2
rm d3j
:删掉快捷方式
history
:查看历史输入过的指令
history 10
:查看最近的10条指令
!108
:执行第108号指令(这个编号就是hisroty查询出来的)
时间日期类
date:显示时间
date +%Y:显示年份
date "+%Y-%m-%d %H:%M:%S" 按格式显示时间
cal:日历
cal 2020:查看2020年日历
搜索查找类
find指令
find 搜索范围 选项
选项 功能 -name 查询方式 按照指定的用户名查找模式查找文件 -user 用户名 查找属于指定用户名所有文件 -size 文件大小 按照指定的文件大小查找文件
按文件名在/home下查找a.txt所在的目录有哪些【
find /home -name a.txt
】查询/opt目录下nxj用户的文件【
find /opt -user nxj
】查询整个linux系统下大于20M的文件(+n大于 -n小于 n等于)【
find / -size +20M
】(M k)
locate指令
因为locate是基于本地数据库运行的,因此第一次运行时需要运行
updatedb
来创建数据库如果没有这个指令,先执行
yum install mlocate
安装完就好了updatedb后直接使用如:
locate a.txt
进行查找为了准确查找,需要我们不定期的维护数据库,也就是updatedb一下,否则数据还是以前的
gref指令与管道符|
gref:过滤查找,管道符"|":将前一个命令的结果传递给后一个命令处理
gref [选项] 查找内容 源文件
-n 显示匹配及行号
-i 忽略大小写
在a.txt中查找“yes”所在的行,并显示行号
cat a.txt | grep -n jd
压缩和解压缩
gzip/gunzip :压缩/解压(用的较少)
gzip 文件(只能将文件压缩为*.gz文件)
gunzip 文件.gz
zip/unzip:压缩/解压(用这个)
zip [选项] xxx.zip 要压缩的内容
unzip [选项] xxx.zip
zip常用选项:
-r:递归压缩,即压缩目录
unzip常用选项:
-d 目录:指定压缩后文件的存放目录
实例:
将/home下所有文件压缩成mypackage.zip 【
zip -r mypackage.zip /home
】将mypackage.zip解压到/opt/tmp下【
unzip -d /opt/tmp mypackage.zip
】
tar指令
tar是打包指令,最后打包的文件是.tar.gz
tar [选项] xxx.tar.gz 打包的目录
选项:
-c:产生.tar打包文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件
实例:
压缩多个文件,将/home/nxj下的a.txt和b.txt压缩成a.tar.gz【
tar -zcvf a.tar.gz a.txt b.txt
】将/home下的文件夹压缩成myhome.tar.gz【
tar -zcvf myhome.tar.gz /home
】将a.tar.gz解压到当前目录【
tar -zxvf a.tar.gz
】将myhome.tar.gz解压到/opt/tmp2中【
tar -zxvf myhome.tar.gz -C /opt/tmp2
】(注意有个-C 要不然解压出问题,意思是指定解压到哪里,当然这个位置需要事前存在的)
6.组管理和权限管理
查看文件的所有者:
ls -ahl
修改文件所有者:chown 用户名 文件名【
chown tom /home/tom/apple.txt
(将root创建的apple.txt的所有者改为tom)】修改文件所在组:
chgrp g1 /home/tom/apple.txt
修改用户所在组:
usermod -g g2 tom
drwxr-xr-x
第一个字符:_文件;d目录;l软链接;c字符设备【键盘,鼠标】;b块文件【硬盘】
接下来三个:文件所有者的权限
再3个:文件所属组用户的权限
再3个:其他组用户的权限
rwx:
r->可读(ls可查看);
w->可修改(如果是文件不一定可删除,如果对这个文件有写的权限,但是对文件所在目录并没有w,则不能删除该文件)
x->可执行(目录则可以进入到该)
修改权限chmod
用户修改文件或者目录权限
第一种方式:+、-、=变更权限
u:所有者 g:所在组 o:其他人 a:所有人
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
:给其他组加上一个写的权限
chmod a-x 文件目录名
:给所有人都减掉一个执行的权限第二种方式:通过数字
r:4 w:2 x:1 按照数字加
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名
修改文件所有者chown
chown nxj abc
:将abc文件的所有者修改为nxj将/home/nxj/d3下所有的文件和文件夹所有者全部改为tom:
chown -R tom d3
-R标识递归嘛
修改文件所属组同上chgrp
chgrp g2 abc
chgrp -R g2 d2
7.任务调度crond
crontab [选项]
选项:
-
-e:编辑一个crontab
-
-l:查询该用户的crontab
-
-r:删除该用户所有的crontab
*/1 * * * * ls -l /home/nxj >> /home/nxj/abc.txt
:每过一分钟,向abc.txt中追加一次/home/nxj的目录情况
service crond restart
:重启任务调
度
* | * | * | * | * |
---|---|---|---|---|
0-60分 | 0-24时 | 1-31日 | 1-12月 | 星期(0-7) |
写一个:
vim mytask.sh
:里面写date>>abc.txt 空格 cal>>cde.txt
chmod 744 mytask.sh
:修改mytask.sh为我可执行,否则即使加入到任务调度中,也不会执行的,因为没有执行权限
crontab -e
:写*/1 * * * * /home/nxj/mytash.sh
8.Linux磁盘分区和挂载
lsblk 或者 lsblk -f
(记法:老师不离开)
mount /dev/usb01 /mnt/usb01
:将外部设备usb01 挂载到 /mnt/usb01
9.进程管理
查看进程
ps -aux
ps -ef
:多一个查看父进程即PPID
终止进程
kill [选项] 进程号
(通过进程号杀死进程)
-
-9:标识强制终止
killall 进程名称
(通过进程名称杀死进程,支持通配符)
10.rpm与yum
rpm:把它看成windows下的setup.exe
rpm -qa|grep xx
:查看当前系统有没有安装xx
rpm -e 软件名
:卸载
rpm -ivh xxx.rpm
:安装rpm包(需要我们有这个rpm包)
yum则就方便很多,它是一种rpm包的管理
yum list|grep **
:查询yum中是否维护并管理**这个包(如docker)
yum install **
:下载并安装**
学习分隔符
passwd -l 用户名
:锁定用户
passwd -u 用户名
:解锁用户
df -h
:查看磁盘使用情况
du /home/nxj/
:查看 /home/nxj/ 空间使用情况
[root@chengxujiejie nxj]# du -smh /home/nxj/
120K /home/nxj/
mount /dev/usb01 /mnt/usb01
:将外部设备usb01 挂载到 /mnt/usb01
umount /dev/usb01 /mnt/usb01
:卸载(个人理解:u盘弹出)
进程:
ps
:查看当前系统中正在执行的各种进程的信息
-
-a 显示当前终端运行的所有进程信息(当前的进程)
-
-A 显示所有进程信息
-
-u 以用户的格式显示进程信息
-
-x 显示后台运行进程的参数
ps -aux | grep redis
ps -ef | grep redis
pstree -pu
:-p是显示父id ,-u是显示用户组 我们通过这个指令查看进程树
kill -9 进程id
:结束进程
安装jdk(通过rpm)
安装:rpm -ivh jdk-8u271-linux-x64.rpm
配置环境变量:(通过rpm方式安装的jdk,自动帮我们配置好了环境变量)
防火墙