Linux

2022/2/23 7:22:09

本文主要是介绍Linux,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 Linux入门

1.1 概述

  • 类Unix操作系统
  • 常用版本:Ubutun、RedHat、CentOS

1.2 Linux和Windows的区别

Windows:收费、封闭、安全性差、PC主流
Linux:免费、开源、安全性较好、服务器主流

2 Linux文件与目录结构

2.1 Linux文件

  • Linux系统一切皆文件

2.2 Linux目录结构


/home
/root
/etc
/tmp
/mnt
/opt

3 网络配置和系统管理操作

3.0 原理图

1.png

3.1 修改IP地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改下面两个:
BOOTPROTO=static
ONBOOT=yes 
#添加下面的内容:  
#IP地址
IPADDR=192.168.1.100  
#网关  
GATEWAY=192.168.20.2      
#域名解析器
DNS1=114.114.114.114
DNS2=8.8.8.8

3.2 配置网络接口:ifconfig

ifconfig

3.3测试主机之间网络连通:ping

ping www.baidu.com

3.4 显示和修改系统主机名称

#显示主机名称
	hostname

#修改hostname文件
	vim /etc/hostname

3.5 临时后台服务管理

#功能描述:开启服务
systemctl start	服务名	
#功能描述:关闭服务
systemctl stop 服务名	
#功能描述:重新启动服务
systemctl restart 服务名
#功能描述:查看服务状态
systemctl status 服务名
#功能描述:查看正在运行的服务
systemctl --type service

3.6 设置后台服务的自启配置

systemctl  list-unit-files		(功能描述:查看所有服务器自启配置)
systemctl  disable 服务名		(功能描述:关掉指定服务的自动启动)
systemctl  enable  服务名  		(功能描述:开启指定服务的自动启动)
systemctl  is-enabled 服务名		(功能描述:查看服务开机启动状态)

3.7 进程运行级别

vim /etc/inittab 

3.8 关机重启命令

sync  			#(功能描述:将数据由内存同步到硬盘中)
poweroff		#(功能描述:关闭系统,等同于shutdown -h now)
reboot 			#(功能描述:就是重启,等同于 shutdown -r now)
#语法:shutdown [选项] [时间]	
	shutdown -h			#关机后停机 
	shutdown -r			#关机后重启

4 VI/VIM编辑器

4.1 什么是VI/VIM编辑器

  • Linux系统的文本编辑器,VIM由VI发展而来

4.2 一般模式

  • 复制、粘贴、删除、撤销、移动
复制:
	y       复制一个字母
    	yw	复制一个单词(光标选到首字母)
    	yy	复制整行
    	2yy	复制2行
    
粘贴:
	p		粘贴到光标后
    	P		粘贴到光标前

删除或剪切:
	x		往后删除1一个字母
	10x		往后删除n个字母
	X		往前删除
   	 dd		删除整行
    	2dd		删除2行
    	dG		从光标行删到文件尾
替换:
	r		替换当前字母
    	R		进入替换模式,ESC结束
    
撤销:
	u
    	Ctrl + r	反撤销
    
移动:
	^		移动到行首
    	$		移动到行尾
    	gg		移动到文件首
    	G		移动到文件尾
    	20G		移动到20页

4.3 编辑模式

a	光标后插入
o	另起一行插入
A	行尾插入

i	光标前插入
O	上一行插入
I	行首插入

4.4 命令模式

:w		保存
:q		退出
:!		强制执行
:wq		保存并退出
:wq!	        强制保存并推出

?		查找内容
/		查找内容
:%?/ x/y	将x替换为y

ZZ		保存并退出

:syntax on	开启颜色
:syntax off	关闭颜色

:set操作:
:set nu		显示行号
:set nonu	不显示行号

:set nohlsearch		取消高亮高亮搜索内容
:set hlsearch		高亮搜索内容

:set ruler		开启右下角状态栏
:set noruler	        关闭右下角状态栏

:set showmode		开启左下角状态栏
:set noshowmode		关闭左下角状态栏

:set list		显示隐藏字符
:set nolist		不显示隐藏字符

4.5 模式间转换

1.png

5 常用基本命令

5.1 帮助命令

#功能描述:获得帮助信息
#语法:man [命令或配置文件]	
	man ls

#功能描述:获得shell内置命令的帮助信息
#语法:help [命令]
	help cd
#常用快捷键
Ctrl + c		#停止进程
Ctrl + l		#清屏
Ctrl + q		#退出

5.2 文件目录类

#pwd:print working directory 打印工作目录
#功能描述:显示当前工作目录的绝对路径
	pwd
	/root/test           #输出结果
#ls:list 列出目录内容
#语法:ls [选项] [目录/文件]
	-a 	#显示所有文件及目录 (. 开头的隐藏文件也会列出)
	-l 	#除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
#常用命令:
	ls 					#列出文件/目录内容
	ls -l					#长数据串列出,包含文件的属性与权限等等数据;(常用,等于ll)
	ls -al					#长数据串列出全部文件
#cd:Change Directory 切换路径
#语法:cd  [参数/路径]
	cd 										#回到根目录
  	cd ~										#回到根目录
  	cd /										#进入根目录
  	cd -										#回到上次所在目录
  	cd ..										#返回上一级目录
  
#绝对路径和相对路径(重点)
  	/										#根目录
  	./或.										#当前目录
  	..或../										#上一级目录
#mkdir:Make directory 建立目录
#语法:mkdir [-p] [目录]
	mkdir /temp					#在当前目录下创建temp目录
	mkdir -p /opt/temp				#创建多级目录(常用)
#rmdir:Remove directory 移动目录
#rmdir [-p] [目录]
	rmdir aaa			#删除空目录aaa
#rm remove移除文件或目录
#功能描述:递归删除目录中所有内容
#语法:rm [选项] [目录]
	-i 	#删除前逐一询问确认。
	-f 	#即使原档案属性设为唯读,亦直接删除,无需逐一确认。
	-r 	#将目录及以下之档案亦逐一删除。
	rm -r	aaa			#删除aaa目录中所有的内容
  	rm -f	aaa			#强制删除
  	rm -rf aaa			#强制删除目录及内容并不提示(常用)
#touch 创建空文件(重点)
#touch [文件/目录]
	touch abc.txt		#创建abc.txt
  	vim def.txt			#创建def.txt并编辑
#cp copy复制文件或目录
#功能描述:复制source文件到dest
#cp [选项] [文件] [目录]
	-d 	#复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
  	-r 	#若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
	cp -r animal /root					#复制整个目录
#mv move移动文件与目录或重命名
#语法:mv [选项] [文件/目录] [文件/目录]
	-b #当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
  	-f #如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
  
#功能描述:重命名
#mv [文件] [文件]
	mv aaa.txt AAA.txt

#功能描述:移动文件
#mv [文件] [目录]
	mv AAA.txt /root
#cat concatenate查看文件内容,从第一行开始显示
#cat  [选项] [文件]
	-n 或 --number #由1开始对所有输出的行数编号。
  
	cat abc.txt			#查看abc.txt
  	cat -n abc.txt			#查看abc.txt并显示行号
#more 文件内容分屏查看器
#more [选项] [文件]
	-num 	#一次显示的行数
  	+num 	#从第 num 行开始显示
#常见操作命令
	space			#向下翻一页
  	enter			#向下翻一行
  	q			#立即离开
  	Ctrl + f		#向下滚一屏
  	Ctrl + b		#返回上一屏
  	=			#输出行号
  	:f			#输出文件名和行号
#less 分屏显示文件内容
#less [选项] [文件]
	ps -ef | less 	#ps查看进程信息并通过less分页显示


#常用操作
	space			#向下翻一页
  	pageup			#向上翻一页
  	pagedown		#向下翻一页
  	/			#查找。n向下查找
  	q			#退出程序
#echo输出内容到控制台
#echo [选项] [输出内容]
	-e				#开启支持\的转义操作
	echo -e \\			#输出\
  	echo -e \\n			#换行
  	echo -e \\t			#制表位
  	echo $PATH			#输出Linux的环境变量
  
  	echo -e hello\\nworld	
  	#hello
  	#world
  	echo -e hello\\tworld
  	#hello	world
  • 注意:单双引号的区别
    • 单引号:引号中的内容不取值
    • 双引号:引号中的内容取值
    • 着重号:执行命令
#着重号
	echo `date`
	2022年 02月 22日 星期二 21:20:08 CST		#输出结果

#双引号
	name=ok
	echo "$name it is good"
	ok it is good		#输出结果

#单引号
	echo '$name it is good'
	$name it is good		#输出结果
#head 显示文件头部内容
#功能描述:默认查看文件头10行内容
#语法:head [选项] [文件]
#功能描述:查看文件头5行内容,5可以是任意行数
#语法:head -n 5 [文件]

	head cat.txt				#查看头10行
  	head -n 5 cat.txt			#查看头5行
#tail 输出文件尾部内容
#功能描述:默认查看文件尾10行的内容
#tail [选项] [文件]
	tail -f cat.txt				#显示最新追加内容,追踪文件变化
#> 覆盖 和 >> 追加
#功能描述:列表的内容写入文件a.txt中(覆盖写)
	ll > aaa.txt

#功能描述:列表的内容追加到文件aa.txt的末尾
	ll >> aaa.txt

#功能描述:将文件1的内容覆盖到文件2
	cat aaa.txt > bbb.txt

#将echo后的内容追加到文件中
	echo helloworld >> aaa.txt
#ln -s软链接
#功能描述:给原文件创建一个软链接
#语法:ln -s [文件/目录] [软链接名]
	ln -s /root link		#给/root创建软连接link
  	ln -s aaa.txt linkaaa		#给aaa.txt创建软连接linkaaa
  
#删除软连接,不能带/
	rm -rf link
#通过软连接查看pwd时,仍然查看到软连接所在目录

#进入软连接的实际路径
	cd -P link
#history 查看已经执行过历史命令
	history				#查看所有历史指令	
  	history 10			#查看最近十条历史指令
  	!178				#执行编号178条的历史指令

5.3 时间日期类

#date 显示当前时间
	date					#显示当前时间
  	date "+%Y-%m-%d %H:%M:%S"		#显示年月日时分秒
  
#date 设置系统时间
#语法:date -s 字符串时间
	date -s 		#"2017-06-19 20:52:18"
  
#date 显示非当前时间
	date -d '1 days ago'				#显示前一天时间
  	date -d '-1 days ago'				#显示明天时间
#cal 查看日历
#语法:cal [选项]
	cal						#显示当月日历
  	cal 2022					#显示2022整年的日历

5.4 搜索查找类

 #find 查找文件或者目录
 #语法:find [搜索范围] [选项]
 	-name				按文件名
  	-user				按用户名
  	-size				按文件大小
  
  find ./ -name "*.txt"				#查找当前目录下txt后缀的文件
  find ./ -user root				#查找当前目录下用户名为root的文件
  find ./ -size +20M				#查找当前目录下大于20M的文件
  find ./ -size 20k				#查找当前目录下等于20k的文件
#locate 快速定位文件路径
#第一次运行前使用updatedb创建locate数据库
	updatedb
	locate abc.txt				#快速定位abc.txt的路径,包括重复的文件
#grep 过滤查找及“|”管道符。将前一个命令的处理结果输出传递给后面的命令处理
#语法:grep [选项] [查找内容] [源文件]
	grep -n		#匹配行号
  	grep -i		#忽略大小写
  
  	cat a.txt | grep -ni hello

5.5 压缩和解压类

#gzip/gunzip 压缩
#不能压缩目录,不保留原来的文件
#语法:gzip [文件]
	gzip aaa.txt
  	aaa.txt.gz			#输出结果
#语法:gunzip [文件.gz]
	gunzip aaa.txt.gz
  	aaa.txt				#输出结果
#zip/unzip 压缩
#语法:zip [选项] XXX.zip [文件/目录]
#语法:unzip [选项] [解压路径]
	zip -r		#压缩目录
  	unzip -d	#指定解压目录
  
  zip -r package.zip /home			#压缩/home目录下所有内容
  unzip package.zip -d /home/aaa		#将package.zip解压到/home/aaa目录
# tar 打包
	tar [选项] XXX.tar.gz [文件/目录]    	#打包目录,压缩后的文件格式.tar.gz
#压缩
	tar -zcvf a.tar.gz a1.txt a2.txt	#将a1和a2压缩到a.tar.gz
  	tar -zcvf package.tar.gz /home/
#解压
  	tat -zxvf a.tar.gz -C /home/aaa		#将a解压到/home/aaa/

5.6 用户权限

#-rw-r--r--. 1 tom  police 231 8月   8 2019 .bashrc
#drwxr-xr-x. 3 tom  police  18 2月  21 23:10 .cache
  • 0首位:表示文件类型
    • 普通文件
    • d 目录
    • l 软连接
    • c 字符设备。例如鼠标和键盘
    • b 块文件。例如键盘
  • 1-3位:表示所属主(所有者)user
    • r=4 读
    • w=2 写。注意:对于文件的w权限,需要对文件目录也有w权限,才能删除
    • x=1 执行
  • 4-6位:所属组group
  • 7-9位:其他组的用户权限other
  • 用户名前数字:
    • 如果是文件,表示硬链接的个数
    • 如果是目录,表示亩的子目录数
  • 组名后面的数字:
    • 如果是文件,表示文件大小
    • 如果是文件,统一为4096

5.7 用户管理命令

#useradd 添加新用户
#功能描述:添加新用户
#语法:useradd [用户名]
	useradd tom				#添加用户tom

#功能描述:添加新用户到某个组(常用)
#语法:useradd -g [组名] [用户名]
	useradd -g police jerry
#passwd 设置用户密码
#passwd [用户名]
	passwd tom
#id 查看用户是否存在
#id [用户名]
	id tom
  
#查看创建了哪些用户
	cat /etc/passwd 

#su 切换用户,只能获得用户的执行权限,不能获得环境变量
#su [用户名]
	su tom
#userdel 删除用户

#功能描述:删除用户但保存用户主目录
#语法:userdel [用户名]
	userdel tom						#删除tom

#功能描述:用户和用户主目录,都删除
#语法:userdel -r [用户名]
	user -r tom						#删除tom及其/home下的文件夹
#who 查看登录用户信息

功能描述:显示自身用户名称
#语法:whoami
	whoami

功能描述:显示登录用户的用户名
#语法:who am i
	who am i
#usermod 修改用户组
#语法:usermod -g [用户组] [用户名]
	usermod -g root tom
#sudo 设置普通用户具有root权限

	cat /etc/sudoers
	visudo
  	/root
#找到如下
  root	ALL=(ALL) 	ALL
#添加
#[用户] ALL=(ALL)	NOPASSWD:ALL
  tom	ALL=(ALL)	NOPASSWD:ALL
#登录tom即可删除root权限的文件
  sudo rm -rf orange.txt

5.8 用户组管理命令

#groupadd 组的创建
#语法:groupadd [组名]
	groupadd police
#groupdel 组的删除
#语法:groupdel [组名]
	groupdel police
#groupmod 修改组名
#语法:groupmod -n [新组名] [老组名]
	groupmod -n thief police
#查看创建了哪些组
	cat /etc/group 

5.9 文件权限管理类

#chmod 改变权限

#chmod  [{ugoa}{+-=}{rwx}] [文件或目录]
	chmod u+x apple.txt				#使apple.txt所属主有执行权限
  	chmod g=rwx apple.txt				#使apple.txt所属组有读、写、执行权限
  	chmod o-x apple.txt				#使apple.txt其他用户失去执行权限
#语句可以多条用“,”隔开

#chmod  [mode=421]  [文件或目录]
#r=4, w=2, x=1
	chmod 777 apple.txt				#使apple.txt所属主、组、其他用户都能读、写、执行
  	chmod -R 777 aaa				#修改aaa目录下所有文件/目录的权限
#chgrp 改变文件所属组
#功能描述:改变文件或者目录的所属组
#chgrp [最终用户组] [文件或目录]
	chgrp thief apple.txt
#chown 改变文件所属主
#功能描述:改变文件或者目录的所有者
#chown [选项] [最终用户] [文件或目录]
	chown root apple.txt				#将apple.txt所有者改为root
  	chown -R tom aaa				#将aaa目录下所有文件/目录所有者改为tom

5.10 磁盘分区类

#df 查看磁盘空间使用情况
#功能描述:列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
#语法:df [选项]
	df -h					#以可读的方式显示磁盘空间使用情况
#fdisk 查看分区 
#功能描述:查看磁盘分区详情
#语法:fdisk [选项]
	fdisk -l	#显示当前分区情况
#mount/umount 挂载/卸载
#语法:
	mount [-t vfstype] [-o options] device dir
  	mount /dev/hda1 /mnt	#将 /dev/hda1 挂在 /mnt 之下

#语法:
	umount [设备文件名或挂载点]

5.11 进程线程类

#ps 查看当前系统进程状态
#语法:ps [options]
  	ps -aux | grep xxx			#查看系统中所有(指定)进程
	ps -ef | grep xxx			#可以查看(指定)子父进程之间的关系
#pstree 查看进程树
#语法:
	pstree [选项]
	pstree -u #显示用户名称
#kill 终止进程
#语法:kill [选项] 进程号
	kill -9	5102		#强制关闭进程5102
  	kill -1 firefox		#重新加载firefox
#top 查看系统健康状态
#语法:
	top [选项]
  	top -d 3	#表示更新周期为3秒
#netstat 显示网络统计信息和端口占用情况
#语法:
	netstat -anp | grep 进程号	#查看该进程网络信息
	netstat -nlp | grep 端口号	#查看网络端口号占用情况

5.12 crond系统定时任务

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
#重新启动crond服务
	restart crond

#crontab 定时任务设置
#语法:
	crontab [选项]
	crontab -e		#进入vi编辑器编辑定时任务
#例:
	0 */2 * * * /sbin/service httpd restart  #每两个小时重启一次apache 

	50 7 * * * /sbin/service sshd start  #每天7:50开启ssh服务 

	50 22 * * * /sbin/service sshd stop  #每天22:50关闭ssh服务 

	0 0 1,15 * * fsck /home  #每月1号和15号检查/home 磁盘 

	1 * * * * /home/bruce/backup  #每小时的第一分执行/home/bruce/backup这个文件 

	30 6 */10 * * ls	#每月的1、11、21、31日是的6:30执行一次ls命令

6 软件包管理

6.1 RPM

rpm -qa | grep rpm	#查看所有安装的RPM安装包

6.1.1 RPM安装包卸载

#RPM卸载命令
#语法:
	rpm -e RPM [软件包]		#卸载软件
	rpm -e --nodeps [软件包]		#不检查依赖卸载软件
#RPM安装命令
#语法:
	rpm -ivh [RPM包全名]
  	rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm		#安装firefox

6.2 YUM仓库配置

6.2.1 概述

  • 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

6.2.2 YUM常用命令

yum [选项] [参数]
	yum update						#更新所有软件命令
  	yum install <package_name>		#仅安装指定的软件命令
  	yum update <package_name>		#仅更新指定的软件命令
  	yum remove <package_name>		#删除软件包命令

6.2.3 国内YUM源(非必须)

  1. 首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  1. 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
  1. 运行以下命令生成缓存
yum clean all
yum makecache



这篇关于Linux的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程