linux基础命令行操作【1】

目录

1、基本命令

2、文件相关知识

3、文本相关操作

4、文件解压、压缩、打包命令 


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
	
		
===================================================================================================


 

下篇:linux基础命令行操作【2】_z输关的博客-CSDN博客

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值