Linux学习笔记

 文档链接:https://pan.baidu.com/s/1XKNLe0qLMk-Rj8yHzLUh6w  提取码:1234 

参考文档

find / -name dump.rdb #寻找dump.rdb位置 ps -ef|grep redis #查看运行状态

1.虚拟机选择网络连接区别

形象理解:有一个教师里面有很多人,张三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:所有人

  1. chmod u=rwx,g=rx,o=x 文件目录名

  2. chmod o+w 文件目录名 :给其他组加上一个写的权限

  3. 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,自动帮我们配置好了环境变量)

 

防火墙

 

posted @ 2020-11-01 19:14  程序杰杰  阅读(142)  评论(0编辑  收藏  举报