目录
1、基本命令
Ctrl+A/t+Fn+F6:管理Linux(Fn+数字)
Linux:输入密码是不显示
Alt+F1 返回图形化界面
Ctril+Alt 移动鼠标
笔记:
在家目录:cd Desktop 进入桌面
在根目录:cd ~/Desktop【相对路径】 == cd /home/linux/Desktop【绝对路径】
/* linux@ubuntu:~$ cd ~/Music
linux@ubuntu:~/Music$ pwd
/home/linux/Music
linux@ubuntu:~/Music$ cd
linux@ubuntu:~$ cd /home/linux/Music
linux@ubuntu:~/Music$ */
linux@ubuntu:~/Desktop$ cp A/B . -r
linux@ubuntu:~/Desktop$ cp A ../Music/ -r
linux@ubuntu:~/Desktop$ cd ~/Music
linux@ubuntu:~/Music$ ls
A
linux@ubuntu:~/Desktop$ mv B ./A
linux@ubuntu:~/Desktop$ mv test1 ./test2
打开终端: Ctril+A/t+T
Ctril+Shift+T
A/t+Tab
linux@ubuntu:~/Desktop$ mkdir -p A/B/C【在A/B/中创建C】
linux@ubuntu:~/Desktop$ mkdir -p A A/B A/B/C
加减窗口: Ctril+Shift+"+"
Ctril+"-"
#######################################################################
Linux字符界面:
进入方法:1.开机默认进入字符界面,在文本模式进入字符界面
2.图形界面进入:右击界面+在终端中打开
3.虚拟控制台进入:Ctrl+Alt+F2/F3/F4/F5/F6
tu推出到图形化界面:Ctrl+Alt+F7 或者输入startx
Shell:用户与计算机相互交互操作的接口。默认是bash
bash:输入命令的
# :root的提示符
$ :普通用户提示符
格式:【用户名@主机名~当前工作目录】字符
【root@rhel~】#ls(命令) -1(选项) /root(参数)
选项:短命令(数字) 长命令(单词)
-linux不显示IP地址
解决:将/etc/sysconfig/network-scripts/ifcfg-xxx 进行vi编写,改为OnBoot=yes
-虚拟机设置中,CD与DVD都要勾选上,启动时链接和已连接。
-xftp无法向目标文件夹上传指定文件时,chomd 777 目标文件夹
-yum makecache 失效时,要注意/etc/yum.repo.d/下的 xxx.repo中的版本号与操作系统的版本号是否一致。 忽略依赖冲突,强制安装命令:rpm -ivh *********.rpm --nodeps --force
-Read-only file system的解决方法应该是磁盘系统出现问题了,执行
sudo fsck -y /
后sync同步后,reboot重启解决问题。今后尽量要避免非正常关机。
-非管理员用户对/home/xxx 拥有较多权限。
touch:新建普通文件
cd:切换目录 cd - 【回到上条命令目录】
ls:浏览目录
mkdir:新建目录
grep:查找文件中符合条件的字符串
more:分页显示文本为文件
Ctrl+C:中断命令运行
cat:查看普通文件内容
查找文件字符串:通配符* ? ls t* --浏览t开头的目录,及该目录的子文件
*可匹配一个或多个字符
?可匹配多个字符
命令行自动补全:
Tab:无歧义、有歧义
命令历史记录:
history:查看历史记录
history n:清空历史记录 n是数字
history -c:清空历史记录
命令排列:
Linux允许在不同命令间放上特殊符号
命令1;命令2 命令1&&命令2
;与&&区别
;先执行命令1,不管命令是否出错,都会执行命令2
&&先执行命令1,正确运行完毕后,再去运行命令2
文件名匹配:
管道:
【命令1】|【命令2】|【命令3】 ls /etc|grep a|more --在根目录查找带有a的文件,分页输出
命令1执行的结果进入命令2,命令2的结果进入命令3
例题:1、在根目录下创建目录aaa
# cd/ && mkdir aaa
或者# mkdir /aaa
2、查看etc/passwd文件中带有root的行,统计行数
# cat /etc/passwd | grep root | wc -l
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
echo:显示内容到终端【屏幕】
wc:统计指定文件的字节数、字数、行数、并将结果显示出来。【统计文本文件的,无法统计目录】/* [root@192 桌面]# wc /root/bc */
重定向:将命令的输出结果保存到文件中,或以文件命令内容作为命令的参数,就要用到重定向。
输出重定向: 【命令】 > 【文件】 将一命令输出保存文件,容易存在相同文件则覆盖内容 /* [root@192 桌面]# echo linux >> /root/mm
输出追加重定向: 【命令】 >> 【文件】 再追加一行内容 [root@192 桌面]# cat /root/mm */
输入重定向: 【命令】 < 【文件】 某一文件内容作为命令的输入 /*[root@192 桌面]# cat < /root/mm */
输入追加重定向: 【命令】 << 【分隔符】
>【文本内容】
>【分隔符】
EOF [end of file]:终止符 Ctrl+C:强制退出
/* */
/*题目:创建root/bc文件在bc文件里写入四行字符串 [root@192 桌面]# cat > /root/bc << EOF
> aaa
> bbbb
> cccc
> dddd
> EOF */
/*题目:统计bc的文本行数:[root@192 桌面]# wc -l /root/bc 【wc+ +(-l)+ 】
统计用户在终端中输入的文本行数:[root@192 桌面]# wc -l <<EOF
*/
……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
VI编辑器:vi+ +文件名
输入G,进入最后一行
命令模式、插入模式、末行模式
命令模式 【:】进入末行模式 【i】光标之前开始插入或【a】光标之后开始插入 进入插入模式
插入模式 【Esc】回到命令模式
末行模式 【Esc】回到命令模式
命令模式 yy 复制光标所在行
dd 删除光标所在行
p 将缓冲区的内容写到光标所在行
u 撤销操作,可执行多次
ZZ 保存退出
ZQ 不保存退出
插入模式 i 从光标当前所在位置之前开始插入
a 从光标当前所在位置之后开始插入
末行模式 :w 保存文件
:wq 保存文件并退出vi编译器
:wq! 保存文件并强制退出vi编译器
:q 退出vi编译器
:q! 强制退出vi编译器
======================================================================================
配置环境变量
命令:vi /etc/profile
2、文件相关知识
一、Linux文件类型:
Linux是以目录文件挂在文件系统的【存在根目录的】,其目录结构是一个分层的树形结构。
除了Linux系统中一般文件外,所有的目录和设备(如光驱,硬盘等)都是以文件的形式存在的。
Linux不能以文件名区分文件类型
1 普通文件【黑色或白色】
第一个符号 -
touch 创建
2 目录文件【蓝色】
第一个符号 d
cd 能进入
mkdir 创建
3 设备文件【黄色】
第一个符号 b或 c
分为字符设备:串行端口的接口设备 如键盘、鼠标 【用c表示】
块设备:存储数据以供系统存取得接口设备 即硬盘 【用d表示】
4 链接文件【浅蓝色】
第一个符号 l【软链接符号链接文件】
类似Windows的快捷方式
5 补充 压缩文件【红色】、可执行文件【绿色】、链接文件有问题【红色闪烁】、其他文件【灰色】
二、查看文件类型:
使用 ll或者 ls -l,看第一个字符
使用 file命令用法:#file 文件名 看执行结果
观察文件名颜色
三、Linux目录结构
根目录下目录:
root 存放root用户相关文件
home 存方法普通用户的相关文件
bin 存放常用命令的目录
sbin 具有一定权限才可以使用的目录
mnt 默认挂载光盘和U盘的目录
etc 存放配置相关的文件
var 存放经常变化的文件
boot 存放引导文件,如果被破坏,则Linux不能启动
user 软件默认安装目录
………………………………………………………………………………………………………………………………………………………………………………………………
文件和目录操作:
pwd 当前目录的详细路径【怎么到的当前目录】
cd 切换目录路径,工作目录路径可以使用绝对路径【从/(根)开始,一步一步切换到所需目录下】或
相对路径【从当前目录开始】
cd .. 回到当前目录的上一级目录
cd ../../.. 回到当前目录的上三级目录
ls【选项】【目录|文件】 选项:-a【显示目录下所有子目录与文件包括隐藏文件】
-i【在输出的第一列显示文件的inode号】
-l【以长格式来显示文件的详细信息】单位字节
-h【显示单位大小】
-r【逆序排序】
-t【根据修改时间排序】
[root@192 home]# ls -li
[root@192 home]# ls -lih 【详细属性一般是这个】
[root@192 aaa]# touch .a3 创建隐藏文件a3
[root@192 aaa]# ls -a
[root@192 /]# ls -lt【降序】
[root@192 /]# ls -ltr
[root@192 aaa]# touch file1 file2 file3
[root@192 aaa]# touch -t 02201230 file1 【修改文件创建日期:月日时分 文件名】
[root@192 aaa]# touch -t 201810011536 file2【修改文件创建日期:年月日时分 文件名】
============================================================================
============================================================================
链接文件:
1、硬链接:就像备份,是将两个或多个文件通过i节点物理的链接在一起
2、软链接:像wnidows里的快捷方式,内容是到一个实际存在的文件的路径描述
1 特点:硬链接的文件具有不同的文件名和同一个i节点,通过其中任何一个文件名访问得到的都是同一内容,
这如同一个文件具有多个别名,所以当其中一个文件内容发生改变时,另外一个文件同样也变
删除其中一个其他不受影响
只能在同样的文件系统、分区和挂载的设备,而且只能针对文件,不能用于目录。
语法:ln [源文件名][链接文件名]
[root@192 aaa]# echo Hello>a1
[root@192 aaa]# cat a1
Hello
[root@192 aaa]# ln a1 file1 --建立硬链接文件
[root@192 aaa]# ls
777 a1 a2 d1 d2 d4 file1 m
[root@192 aaa]# cat file1
Hello
[root@192 aaa]# rm -f file1 --删除文件
2 特点:软链接文件与目标文件是两个独立的文件,有着各自的i节点和数据块。
删除源文件,软链接文件不能独立存在,只保留文件名,但没有内容。【就像删除windows的源文件,快捷方式就没用了】
可以跨越各种文件系统和挂载设备,文件、目录均适用。
[root@192 aaa]# echo aaa>file3
[root@192 aaa]# cat file3
aaa
[root@192 aaa]# ln -s file3 file4 --创建软链接
[root@192 aaa]# cat file4
aaa
[root@192 aaa]# echo bbb>>file3
[root@192 aaa]# cat file4
aaa
bbb
===============================================================
vi编译后文本内容查看显示
1 cat、2 more、3 less、4 head、5 tail
1:cat [选项][文件]
选项:-n 对输出的所有行编号
-b 对非空输出行编号
-s 当遇到连续两个以上空行,就将连续空行合并为一行的空行
2:more [选项][文件名]
分页显示文本文件内容,空格键显示下一页,B键查看上一页内容,Q键退出
选项:+n 从第n行开始显示文件内容,n代表数字
-n 一次分页显示的行数,n代表数字
3:less [选项][文件名]
是more的改进版,允许使用者上下滚动,Q键退出,上下键滚动
4:head [选项][文件名]
显示指定文件的头几行,默认10行
-n 5 指定行数,如 5行
-c 100 指定字节,如 100字节
5:tail [选项][文件名]
显示指定文件的末尾几行,默认10行
-n 5 指定行数,如 5行
-c 100 指定字节,如 100字节
====================================================================
mkdir权限
-m 设置权限
-p 创建多级目录
每个文件可以设置三类用户的访问权限:文件的用户所有者(属主)、文件的组群所有者(属组)、系统中的其他用户(其他用户)。
每一位用户都有对文件或目录的读取、写入和执行权限
权限表示法:1 字符表示法
读取:r 写入:w 执行:x 不具有权限:-
9个权限位,每3位一组,分别是属主、属组、其他用户的权限
2 数字表示法(八进制)
读取:4 写入:2 执行:1 无权限:0
例如:-rw-rw-r-x 665 【第一位是类型】
drwx------ 700
mkdir [选项][目录]
常用选项:-m 对新建的目录进行权限设置,在没有-m时默认权限755
例题:创建权限为777的空目录newdir1
#mkdir -m 777 newdir1
3、文本相关操作
文件和目录操作(2)
1、cp 2、mv 3、rmdir 4、rm 5、wc
1、cp:复制文件或目录到其他目录中
cp [选项][源文件|目录][目标文件|目录]
-r 此时目标必须为一个目录
例题:将/newdir1/file1文件复制到/home目录下
#cp /newdir1/file1 /home
将/newdir1目录以及子文件和子目录都复制到/root目录中【复制整个目录,包括目录里的文件等】
#cp -r/newdir1 /root
将文本文件/dir1复制到/home中,并重命名为dir2
#cp -r/dir1 /home/dir2
覆盖文件,去除别名影响,i【interactive】,就不用一直写yes了,【查看别名 #alias cp】
#\cp xxx/xxx/* yyy/yyy
2、mv:对文件或目录更改名称以及移动文件和目录路径
mv [选项][源文件|目录][目标文件|目录]
例题:将/newdir1目录下所有已file开头的文件剪切到/newdir1/newdir2目录下
#mv /newdir1/file* /newdir1/newdir2
将/newdir1目录改名为/dir1
#mv /newdir1 /dir1
3、rmdir:删除空目录【用的很少】
rmdir[选项][目录]
4、rm:删除文件或目录
rm [选项][文件|目录]
-f: 强制删除 [一般与r连用]
-r: 删除目录及其内容
例题:删除当前目录下的file1文件
#rm file1
删除目录/dir及该目录下的所有文件一同删除
#rm -rf /dir1
5、wc:统计指定文件行数、单词数、字节数和字符数
wc [选项][文件]
例题:统计text.txt文件的行数、单词数、字节数
#wc text.txt
统计/etc/passwd文件的行数
#wc -l /etc/passwd
或#cat /etc/passwd | wc -l
============================================================
文本内容处理:
1、sort,2、uniq,3、cut,4、comm,5、diff
1、对文件中的数据【字符】进行排序,并将结果显示在标准输出上。默认升序,并没有修改,只是单纯输出。
sort [选项][文件名]
选项:-r 逆序输出结果
-u 输出中去除重复行
-n 按数字排序
-o 将排序结果输出修改保存到原文件中【不可用输出重定向】
--将text1中内容顺序修改为升序
#sort text1 -o text1
2、比较一个文件,将文件内的重复数据从输出文件中删除,只留下每条记录的唯一样本,只是单纯输出。
注意:使用之前必须内容要进行排序
uniq [选项][文件名]
选项:-d 只输出重复的行
-u 只输出不重复的行
-c 显示输出中的每行行首加上本行中出现次数
3、从每一行剪切字节,字符和字段并将这些字节、字符和字段写至标准输出。只是单纯输出。
cut [选项][文件]
-d 指定剪切完的分隔符作为分界
-f 指定剪切字段 可用,【 字段1,字段2,字段3】或-【 字段1-字段3】
-b 指定剪切字节
--显示/etc/passwd的第一个和第五个字段,用冒号隔开
#cut -f 1,5 -d:/etc/passwd
--显示当前登陆用户的第三个字节
#who|cut -b 3
who是一个命令:显示当前登陆的用户资料
4、比较两个文本文件,并将其结果显示出来,最后输出三列,第一列显示第一个文件独有的行;只是单纯输出。
第二列显示第二个文件仅有的行;第三列显示两个文件都存在的行。
注意:使用之前必须内容要进行排序
comm [选项][文件1][文件2]
-1 不显示文件1独有的行
-2 不显示文件2独有的行
-3 不显示两个文件共有的行
--显示两个文件共有的行
#comm -12 file1 file2
5、比较两个文本文件,输出不同
注意:不要求事先排序。
diff [选项][文件1][文件2]
输出内容:与ed编译器内容相关
a -- add
c -- change
d -- delete
| 表示前后两个文件有不同
< 后面文件比前面文件少1行内容
> 后面文件比前面文件多1行内容
==================================================
查找:
1、grep 2、find 3、cal 4、date 5、hwclock
1、在文件内查找符合条件的字符串
grep [选项][查找模式][文件名]
--在文件text中搜索“banana“
[root@192 aaa]# grep 'banana' text1
--在一text开头的文件中搜索字符“banana”
[root@192 aaa]# grep 'banana' text*
--在文件text2中找出以p开头的行内容 【^ 指定字符开头】
[root@192 aaa]# grep ^p text2
--在text2中,找到不是以p开头的行内容【-v 显示不包含指定内容的行】
[root@192 aaa]# grep -v ^p text2
--在文件text2中,找出以le结尾的行内容【$ 指定字符结尾】
[root@192 aaa]# grep le$ text2
--查找目录/etc下带有al文件名 //grep 只能查找文件,所以需要管道符号
[root@192 aaa]# ls /etc|grep 'al' 【管道符号将前面的运行结果作为内容作为输入传递给后面的命令】
2、在目录中查找文件,并执行制定操作
find [路径][选项]
-name 按照文件名查找
-type 按照文件类型查找文件
-size +nk 查找大小超过n的文件n为数字,c代表字节;k代表KB;m代表MB;g代表GB
-empty 查找空文件,可以使普通的文件或目录
--将当前目【.】及其子目录【/】中,以‘text’打头的文件列出【./ 代表当前目录及子目录】
#find ./ -name 'text*'【通配符要跟''】
--将/sbin目录及其子目录【/】所有链接文件列出
#find /sbin/ -type l
--将/sbin所有大于1024KB的文件列出
#find /sbin -size +1024k
--查找/root目录中为空的文件或子目录
#find /root -empty
3、显示计算机系统的日历
cal [选项][[[日]月]年]
-m 以星期一为每周第一天的方式显示
-j 显示出给定月中的哪一天,是一年中的第几天【从1月1日开始】
-y 显示出整年的日历【-y=cal 2020】
--显示本月的日历
#cal
--显示2017年1月的日历
#cal 1 2017
--以星期一为每周第一天的方式显示
#cal -m
--以1月1日起的天数显示今年的日历
#cal -jy
--显示2018年8月到现在的天数
#cal -jy 8 2018
4、显示和设置计算机系统的日期和时间【root才可以设置】
date [选项][显示时间格式]
--显示当前日期时间
#date
--设置日期时间为2028年 2月2日19点14分
#date 020219142028 【月日时分年】
--设置时间为9时16分
#date -s 09:16:00
--设置计算机日期为2024年4月14日
#date -s 20240414 【年月日】
5、查看和设置硬件日期和时间(RTC)
-w 以系统时间更新硬件时间
-s 以硬件时间更新系统时间
--查看硬件时间
#hwclock
--以系统时间更新硬件时间
#date
#hwclock -w
--以硬件时间更新系统时间
#hwclock -s
=====================================================
4、文件解压、压缩、打包命令
.tar
解包:tar -xvf FileName.tar
打包:tar -cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar -zxvf FileName.tar.gz
压缩:tar -zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
———————————————
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
———————————————
.lha
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
———————————————
.rpm
解包:rpm2cpio FileName.rpm | cpio -div
———————————————
.deb
解包:ar p FileName.deb data.tar.gz | tar zxf -
———————————————
.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea
解压:sEx x FileName.*
压缩:sEx a FileName.* FileName
sEx只是调用相关程序,本身并无压缩、解压功能,请注意!
gzip 命令
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
语法:gzip [选项] 压缩(解压缩)的文件名该命令的各选项含义如下:
-c 将输出写到标准输出上,并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件,显示下列字段:
压缩文件的大小;未压缩文件的大小;
压缩比;未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试,检查压缩文件是否完整。
-v 对每一个压缩和解压的文件,显示文件名和压缩比。
-num 用指定的数字 num 调整压缩的速度,-1 或 --fast 表示最快压缩方法(低压缩比),-9 或--best表示最慢压缩方法(高压缩比)。系统缺省值为 6。
指令实例:
gzip *% 把当前目录下的每个文件压缩成 .gz 文件。
gzip -dv *% 把当前目录下每个压缩的文件解压,并列出详细的信息。
gzip -l *% 详细显示例1中每个压缩的文件的信息,并不解压。
gzip usr.tar% 压缩 tar 备份文件 usr.tar,此时压缩文件的扩展名为.tar.gz。
5、补充知识点
--linux快捷键
Ctrl_l 清屏 == #clear
Ctrl+R 查找历史记录
Ctrl+S 盲打模式 Ctrl+Q 退出盲打模式
Ctrl+K 删除光标后的东西 Ctrl+Y 撤销删除的操作
Ctrl+Z 暂停当前进程,调到后台,fg可以调出。 Ctrl+C 杀死前台进程,
Ctrl+D 退出当前窗口
vi编辑器
shift+v 可视行模式选中行
<向左缩进,>向有缩进
--配置文件
/*/usr/lib/systemd/system/:每个服务最主要的启动脚本的配置放在这,有点类似以前的/etc/init.d;
/run/systemd/system/:系统执行过程中所产生的服务脚本所在目录,这些脚本的优先级要比/usr/lib/systemd/system/高;
/etc/systemd/system/:管理员根据主机系统的需求所创建的执行脚本所在目录,执行优先级比/run/systemd/system/高;
注:/etc/systemd/system/仅是链接到正确的执行脚本配置文件而已。所以想要看执行脚本设置,应该就得要到/usr/lib/systemd/system/去查阅。 */
--system
systemctl status xxx
/*Linux 服务管理有两种方式service和systemctl。而systemd是Linux系统最新的初始化系统(init),
作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动,
systemd对应的进程管理命令就是systemctl。systemctl命令兼容了service。
*/
服务的几种常见的状态呢,这里列举说明一下。
active(running):正有一只或多只程序正在系统中执行的意思;
active(exited):仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行;
active(waiting):正在执行当中,不过还需要等待其他的事件才能继续处理;
inactive:这个服务目前没有运行;
dead:程序已经清除;
服务程序的启动状态,也分为一下几种状态。
enabled:这个daemon将在开机时被执行;
disabled:这个daemon在开机时不会被执行;
static:这个daemon不可以自己启动(enable不可),不过可能会被其他的enabled 的服务来唤醒(关联属性的服务);
mask:这个daemon无论如何都无法被启动,因为已经被强制注销(非删除),可通过systemctlunmask方式改回原本状态;
--linux文件目录
/*Bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的。
Dev:该目录中主要存放的是外接设备,例如盘、其他的光盘等。在其中的外接设备是不能直接被使用的,需要挂载(类似windows下的分配盘符)。
Etc:该目录主要存储一些配置文件。
Home:表示“家”,表示除了root用户以外其他用户的家目录,类似于windows下的User/用户目录。
Proc:process,表示进程,该目录中存储的是Linux运行时候的进程。
Root:该目录是root用户自己的家目录。
Sbin:全称super binary,该目录也是存储一些可以被执行的二进制文件,但是必须得有super权限的用户才能执行。
Tmp:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
Usr:存放的是用户自己安装的软件。类似于windows下的program files。
Var:存放的程序/系统的日志文件的目录。
Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。 */
--注意三个文件:
/etc/passwd 存储用户的关键信息
/etc/group 存储用户组的关键信息
/etc/shadow 存储用户的密码信息
/etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。
每个用户目录下的一个隐藏文件:.profile 只对当前用户永久生效。因为它保存在当前用户的 Home 目录下
如 vi /root/.bash_profile 当前用户的环境变量
/dev/zero 和 /dev/random 硬件的设备驱动(如硬盘)和特殊设备文件
/proc/cpuinfo cpu相关信息
/etc/redhat-release 存储redhat版本号
/proc/partitions 查看硬盘的一些信息
dmsetup 是一个底层的逻辑卷管理, dm 应该是 Device Mapper的简称。
dmsetup status 查看逻辑卷状态
ll /dev/mapper/ 查看逻辑卷信息与联系
fdisk /dev/sdb -l 查看sdb磁盘下的信息
vim /etc/fstab 更改开机时自动挂载文件
/etc/profile 环境变量文件【修改后用source生效】
或者使用命令#env | grep xxx
/etc/fstab 自动挂载文件
/etc/init.d 开机执行脚本
~/.bashrc 别名配置文件 //~]# alias 显示命令别名列表
/etc/shells 查看shell的解析器种类
/etc/profile /etc/bashrc 系统级 ~/.bash_profile ~/.bashrc 用户级 登录shell时会执行这4个文件
~/.bash_logout ~/.bash_history 【记录命令历史的】 离开shell时会执行这两个文件
而进行su命令时,加短横杠-,就会执行四个文件且目录跳到家目录,不加只会执行/etc/bashrc,~/.bashrc
vim /etc/sudoers sudo的用户
cat /etc/resolv.conf 查看DNS配置
vim /etc/crontab crond定时任务设置
//====================================================================================================================================
NFS服务器配置,先一台服务器,一台客户机。
/etc/sysconfig/network-scripts/ifcfg-ens33
BootPROTUBOOTPROTO="dhcp" //启动的网络协议,随机分配ip地址
设置ONBOOT=yes //是否开机自启网卡
重启网络服务:systemctl restart network
--/etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
4 BOOTPROTO="static" //设置静态ip,固定IP地址
15 ONBOOT="yes"
16 IPADDR=192.168.197.154 //ip地址
17 NETMASK=255.255.255.0 //子网掩码
18 GATEWAY=192.168.197.1 //网关【一般为ip地址的1或者2号】
19 DNS1=8.8.8.8 //【DNS服务器】
--如果哪条命令提示xxx not find,可以使用下列语句找到所依赖的包,可以先卸载yum remove 包名,
然后yum install 包名
yum search xxx
建立NFS服务器
/*/etc/exports nfs服务所需要加载的配置文件
*/
(1)yum -y install nfs-utils rpcbind
(2)//设置开机启动nfs相关服务
systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
(3)启动nfs service服务
//查看xxx服务状态 systemctl status xxx
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap
开启防火墙后,进行允许配置
firewall-cmd --add-service=rpc-bind
firewall-cmd --add-service=mounted
firewall-cmd --add-service=nfs
(4)创建需共享的目录
mkdir -p /application/share //自定义的目录
chmod 777 /application/share
(5)配置需要共享的目录到/etc/exports下,xxx.xxx.xxx.xxx为需要共享的对象的ip地址
echo "/application/share 192.168.xxx.xxx(rw,sync,no_root_squash)" >> /etc/exports
exportfs -r //使配置文件生效
showmount -e //查看共享目录是否正确
systemctl stop firewalld.service //关闭防火墙
或
1、NFS的防火墙除了固定的port111、2049外,还有其他服务如rpc.mounted等开启的不固定的端口
2、修改/etc/sysconfig/nfs文件,将下列内容的注释去掉,如果没有则添加
RQUOTAD_PORT=1001
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
3、将端口加入到防火墙允许策略中
firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp \
--add-port=2049/tcp --add-port=2049/udp \
--add-port=1001/tcp --add-port=1001/udp \
--add-port=892/tcp --add-port=892/udp \
--add-port=32803/tcp --add-port=32803/udp \
--add-port=32769/tcp --add-port=32769/udp --permanent
firewall-cmd --reload
配置NFS客户端
(1)//安装nfs
yum -y install nfs-utils
(2)//检查共享目录是否设置正确,xxx.xxx.xxx.xxx 为共享服务器地址
showmount -e xxx.xxx.xxx.xxx
(3)//挂载远程服务器NFS分区到本地guazaidian,xxx.xxx.xxx.xxx 为共享服务器地址
mkdir -p /application/share_cli
mount -t nfs xxx.xxx.xxx.xxx:/application/share /application/share_cli
df -Th //查看是否挂载成功。这样关机后挂载失效
开启自动挂载:
vim /etc/fstab
192.168.xxx.xxx:/application/share /application/share_cli nfs defaults 0 0
//========================================================================================
NGINX
安装插件
#yum -y install openssl openssl-devel
安装完依赖后解压安装nginx
#./configure --prefix=/usr/local/nginx
#make
#make install
创建服务器脚本重新加载命令
#vi xxx.service
#systemctl daemon-reload
#reboot
#systemctl start xxx.service
正向代理:为客户端做代理,用户请求通过代理服务器,代理给Internet
反向代理:为服务器做代理,用户请求通过代理服务器,代理给web服务器,web服务器做出响应给代理服务器,代理给客户端
-nginx 隧道式代理
LVS DR式代理【在web服务器做出响应时直接响应给客户端,而不再经理代理服务器】
负载均衡:对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。
如果有不止一个代理服务器,DNS 可以采用“轮询法”选择其 IP 地址,随机地为请求选择路由。
客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。
负载均衡关键字【不常用】:
weight=n; 权重
down; 服务器下线
backup;备用服务器
为Nginx动态添加模块(nginx必须编译安装,不可以yum安装)
这里以安装第三方ngx_http_google_filter_module模块为例。
Nginx的模块是需要重新编译Nginx,而不是像Apache一样配置文件引用.so
下载第三方扩展模块ngx_http_google_filter_module
# cd /data/software/
git clone https://github.com/hongzhidao/nginx-upload-module.git
git clone https://github.com/masterzen/nginx-upload-progress-module.git
查看nginx编译安装时安装了哪些模块
将命令行切换到Nginx执行程序所在的目录并输入./nginx -V,具体如下:
[root@binghe sbin]# ./nginx -V
[root@localhost sbin]# sudo ./configure --add-module=/xxx/nginx-upload-module
--add-module=/xxx/nginx-upload-progress-module
make
(make install)【如果已经安装好了nginx,就不用执行了,make install 会覆盖之前的安装。很危险】
然后执行命令:
cp /.../nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
将新生成的nginx程序复制到老的安装目录下面,校验是否开启成功:
nginx -V
==================================================================================================
//seq 数字序列 for i in {2..200} for i in `seq 2 200`
用法:seq [选项]... 尾数
或:seq [选项]... 首数 尾数
或:seq [选项]... 首数 增量 尾数
以指定增量从首数开始打印数字到尾数。
-f, --format=格式 使用printf 样式的浮点格式
-s, --separator=字符串 使用指定字符串分隔数字(默认使用:\n)
-w, --equal-width 在列前添加0 使得宽度相同【等位补齐】
--help 显示此帮助信息并退出
[zrx@localhost ~]$ seq -s '/' -w 1 10
01/02/03/04/05/06/07/08/09/10
//tee 在看到输出的同时,也将其存入一个文件,没有则创建,默认当前目录
tee命令作用可以用字母T来形象地表示。它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
tee -a files
其中,- a表示追加到文件末尾。
当执行某些命令或脚本时,如果希望把输出保存下来,tee命令非常方便。
$ who | tee -a who.out
//which
[root@localhost profile.d]# which bash
/usr/bin/bash
[root@localhost profile.d]# which python
/usr/bin/python
[root@localhost profile.d]# which rm
alias rm='rm -i'
/usr/bin/rm
//wait
wait(参数) 使用 wait 是在等待上一批或上一个脚本执行完(即上一个的进程终止),
再执行wait之后的命令。
(1)等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态。
如果没有制定参数,则等待所有子进程的退出,其退出状态为0.
(2)shell中使用,只等待函数中启动的后台子任务。
在shell中使用wait命令,相当于高级语言里的多线程同步。
//ping
-c<完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-W 超时时间设置
#ping -c1 -W1 xxx.xxx.xxx.xxx //超时1秒ping不通则退出
// command<<-EOF 【建议加短横杠-,方便缩进】
(内容)
例如:
#!/bin/bash
su - oracle -c "
export ORACLE_SID=orcl
sqlplus /nolog <<-EOF
connect / as sysdba
startup;
exit;
EOF"
sleep 5
su - oracle -c
lsnrctl start
说明:
将“内容段”整个作为命令的输入。
用su命令读取整段命令,并逐行执行。
// : << COMMENTBLOCK
shell脚本代码段
COMMENTBLOCK
用来注释整段脚本代码。 : 是shell中的空语句。
echo start
:<<COMMENTBLOCK
echo
echo "this is a test"
echo
COMMENTBLOCK
echo end
代码示例:
[root@newserver shell]# sh eof.sh
start
end
//保留窗口
yum -y install screen
screen 【进入页面后先输入screen】
。。。。。。
screen -list
screen -d 63403
screen -r 63403
使用screen -r id或者名称重新连接会话,重新连接会话前要求会话的状态为Detached。
kill -9 id
如果会话窗口被kill,状态转为dead无法连接,可以使用screen -wipe命令清除会话窗口。
exit 【Ctrl+a+d 退出当前会话窗口】
screen -S test 创建会话名为test
[root@s145]~# screen -ls
There is a screen on:
2877.test (Attached)
1 Socket in /var/run/screen/S-root
//前台 后台进程
fg 将后台进程调到前台
bg 将前台进程调到后台
command1 & 后台执行,并显示这个后台进程的PID
如 {函数体}&
前台进程Ctrl+C可以杀掉。且占用整个终端
父进程创建出一个子进程后子进程占用终端,父进程sleep
===================================================================================================