Linux教程

Linux基础

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

Linux系统安装及基本操作

Linux概述

  • Linux内核是基于GNU发布的自由软件
GNU:目标是编写大量兼容Linux系统的自由软件
GPL:允许用户任意复制,传递,修改和再发布
LGPL
  • 常见开发源码的软件
Firefos:网页浏览器
OpenOffice:网页套件
Apache
......
  • Linux发行版本构成
完整的OS=Linux内核+各种自由的软件
厂商提供的辅助安装、软件包管理等程序

磁盘分区

1.概述

  • 硬盘很大,分成一块块的,方便管理
  • 一块硬盘可以分为两大分区:主分区和扩展分区
1.主分区:能安装操作系统,能进行计算机启动
	这样的分区可以直接格式化
2.扩展分区:装文件
  • 分区规则
MBR分区表类型的硬盘中最多只能有4个主分区
多余的就要使用扩展分区
如果使用扩展分区,一个硬盘上最多只能有3个主分区和1个扩展分区
扩展分区不能直接使用,经过二次划分成为逻辑分区才可使用
一个扩展分区的逻辑分区可以是任意多个

2.Linux磁盘分区

  • Linux将硬盘、分区等设备都表示为文件
/dev/(hd/sd)a5
	1.dev:硬件设备文件所在目录
	2.hd:IDE设备
	  sd:SCSI设备(服务器专用硬盘)
	3.a/b/c...:硬盘顺序号
	4.1/2/3...:分区顺序号

在这里插入图片描述

  • 命令
df -lh:查看所有硬盘的使用状
du -sh /etc:查看etc目录的大小
free:显示内存使用状况
arch:显示架构
cat /proc/cpuinfo:显示CPU信息
cat /proc/meminfo:显示内存信息
fdisk -l:查看现有磁盘大小

文件系统类型

  • Linux默认使用EXT3(第3代扩展文件系统)、SWAP(交换文件系统)
  • 一般建议交换分区的大小设置为物理内存的1.5~2倍

目录结构

  • 树型目录结构
cd /:根目录
ls:列出目录下所有的文件

在这里插入图片描述

  • 目录
1.root:启动Linux的核心文件(不能删,否则系统可能无法启动)
2.home:普通用户个人文件(对应Windows/用户)
	当前登录的用户有完全操作权限
	存放配置信息,不能用来登录
	htp:用户所有服务
	httpd
	samba
	user1
	user2
2.bin:二进制的可执行文件,不需要超级用户权限
3.sbin:可执行程序目录,大多存放设计系统管理的文件,需要超级用户权限(root权限)
4.proc:内核镜像文件(虚拟),保存所有内核参数及系统配置信息
	img都是镜像文件
5.usr:用户级文件
	bin:几乎所有用户用的命令
	sbin:系统管理员命令
	include:C/C++头文件目录
	lib:固定的程序数据
	local:**本地安装软件保存位置
	main:手工生产的目录
	info:信息文档
	doc:不同包文档信息
	tmp:**临时目录
6.boot:引导加载文件所需的文件		
7.lib:系统公共库文件
8.dev:设备文件
9.etc:配置文件
	skel:建用户就复制该目录
	sysconfig:默认系统配置信息
10.var:变量目录,存放经常变的信息
	file:
	lib:
	local:
	lock:
	log:日志
	run:
	spool:
	tmp:
	catman:
mnt:临时挂载文件系统(U盘),一般情况下都是空的,建议在该目录下再建立一个目录挂载设备
tmp:临时文件目录,一旦关机就全部消失
	注意:某些东西安装时某些文件默认会放在该目录下,记得改!!!!!
lost+found:文件系统修复时的恢复文件

Linux命令

1.概述

  • 用于实现某一类功能的指令或程序
  • 命令的执行依赖于解释器

2.分类

  • 内部命令:属于Shell解释器的一部分

  • 外部命令:独立于Shell解释器之外的程序文件

3.通用命令格式

命令字符 [选项] [参数]
	1.注意:空格分割
	2.选项:- 短格式选项(单个字符)
	 	    -- 长格式选项
	 	    多个短路式的选项写在一起只用-
	3.参数:命令操作的对象

4.常见命令

systemctl set-default multi-user.target:切换界面
reboot:重构
uname -a:查看Linux版本
ls:全部列表--文件名
ll:详情列表

5.辅助操作

tab:自动补齐
\:强制换行
Ctrl+U:清空至行首
Ctrl+K:清空至行尾
Ctrl+L:清屏
Ctrl+C:取消本次命令编辑,有结果
Ctrl+Z:后台运行,没有结果

6.获得命令帮助

help:查看Bash内部命令的帮助信息
XX --help:查看XX外部命令的信息

man XX:阅读XX命令的官方手册

info:阅读信息页

q:退出

7.管道和重定向

  • 管道|:将前面命令的屏幕输出结果作为后面命令的处理对象
  • 重定向输出>:将正确的输出结果保存到>后的指定文件中
  • col:过滤文本中一些特殊控制字符
col支持中文
	LC_CTYPE=zh_CN.UTF-8
	LANG=en_US.UTF-8

8.命令别名

  • alias(查看所有的别名)
  • alias name=value(name就是value命令的别名)
  • unalias name(取消别名)

9.目录和文件管理

  • 目录操作命令
pwd:打印当前的工作目录
cd:切换路径
	相对路径/绝对路径
	..:上一级目录
	.:当前目录
	/:根目录
	~:当前登录的用户目录
ls:列表(列出该目录下的所有目录和文件)
	ls -l:列出详细信息
		第一栏位:文件属性
			开头  d:目录
				  -:文件
				  c:字符文件
				  l:链接
			后面:权限
		第二栏位:文件个数,目录=1,文件=目录个数
		第三栏位:该文件或目录的拥有者或创建者
		第四栏位:所属的组
		第五栏位:文件大小
		第六栏位:文件或目录创建的时间
		第七栏位:文件名
ll:相当于ls -l,列出详细信息
	支持通配符:* 任意多个字符
			   ? 一个字符(想要多个,可以????)
mkdir:创建目录
	单级目录:mkdir cj
	多级目录:mkdir -pv cj/a/b/c
		p:连父目录一起创建,否则只建一级
		v:显示创建详情
du:查看信息
 -a:全部文件
 -h:以人类可读的形式
 -s:总数
  • 文件操作命令
touch 文件名:创建文件
file 文件名:查看文件类型
cp 被复制的文件名 复制的文件名:复制文件
	-r:多级目录使用其递归
rm 文件名:删除文件
	-r:递归
	-d:只删除空目录
	-f:强制操作而不提示
mv 被移动的文件名 移动的位置:移动文件
which 命令程序名:查看命令或程序的位置
find 查找范围 查找条件:查找
ln [-s] 源文件或目录 目标文件或目录:
	硬链接:以文件副本的形式存在,不占用实际空间
		    不允许目录创建硬链接
		    只有在同一个文件系统中才可以创建
		    在选的位置上生成一个和源文件大小相同的文件
	软链接-s:以路径的形式存在
			 可以跨文件系统
			 可以对不存在的文件名进行链接
			 可以对目录链接
			 只会在选定的位置上生产一个源文件的镜像,不会占用磁盘空间
	无论硬还是软,文件都保持同步变化
  • 文件内容操作命令
cat 文件名:查看文件内容
more 文件名:一页页查看内容
less 文件名:一页页查看内容
head -n 文件名:查看前n行
tail -n 文件名:查看后n行
wc 文件名:统计 单词数 行数 字节数
grep 待查找内容 文件名:
  • 归档及压缩命令

10.网络命令

ip addr:查看网卡信息
ifconfig:查看网卡信息
ping:有各种参数  man ping自查
scp:上传jar包
netstat:查看网络状态
	netstat -a:查看所有端口
	netstat -at:查看TCP端口
	netstat -au:查看UTP端口
	netstat -ano:查看tomcat端口
	netstat -ano|grep 8080:查8080端口
ss:查看网络状态
lsof:查看当前系统进程信息
	一般 lsof -i|grep 进程名
	列1:进程名称
	列2:进程所有者
	列3:文件描述符
	列4:指定磁盘名称
	列5:文件大小
	列6:所有节点
	列7:打开文件的确切名称
telnet:网络连接命令
host:分析域名查询工具
tcpdump:抓取数据包工具,打印所有经过网络接口数据包的头信息

11.进程

ps:静态列出系统中运行的进行
	ps -a:列出系统中所有运行的进行
	ps -ef|frep XXX:列出需要的进程
	ps -aux:显示进程信息
top:动态监听系统中不同进程
kill:杀死结束进程
	kill -9 <pid>
ulimit:控制系统资源在shell和进程上的分配量

12.系统信息查询

echo $xxx:系统环境变量
uname:操作系统名
	uname -a
hostname:本机映射域名
	对应 /etc/hostname 文件
dmesg:开机信息
uptime:系统运行时间
du:磁盘空间情况 
top:实时显示 系统资源 情况 
df:文件系统磁盘空间状态
free:系统内存
cal:日历
date

13.压缩

gzip
	压缩:  gzip -9 要压缩的文件
	解压:  gzip -d 压缩文件
tar
	压缩:  tar -cvzf 待压缩文件名.gz 要压缩的文件名   
	解压:  tar -xzvf 压缩的文件名.gz

14.文件编辑

  • 作用
1.创建或修改文本文件
2.维护Linux系统的各种配件
  • 常用文本编辑器
vi
vim:带颜色
	三种
		命令
			按 i, a
				进入输入模式
					按esc退到命令
						按  :
							进入莫行模式
								:wq
								:q!
  • 工作模式
命令模式、输入模式、末行模式

在这里插入图片描述

管理用户及文件权限

1.管理用户和组账号

  • 用户和组账号概述
1.用户账户:普通用户+程序用户(一个程序装上就有一个空间,超过这个空间就不能操作,别的用户有该用户组权限就可以访问)
2.组账号:基本组(私有组)+附加组(公共组)
3.UID:用户标识符
  GID:组标识号
  • 用户账号管理
用户账号文件:
	保存用户账号基本信息:/etc/passwd
	保存用户密码基本信息:/etc/shadown
添加用户账号
	useradd [选项] 用户名
		-u:知道UID标记
		-d:知道宿主目录
		-e:指定账号失效时间
		-g:指定用户基本组名
		-G:指定用户附加组名
		-M:不为用户建立并初始化宿主目录
		-s:指定用户登录的Shell
	底层步骤:1.创建home目录,将模板文件拷贝进来
		  2.在/etc/passwd中添加用户
		  3.在/etc/shadown中添加密码
设置更改用户口令
	passwd [选项] 用户名
		-d:清空用户密码,使空密码就可以登录
		-l:锁定用户账号
		-S:查看用户账号状态
		-u:解锁用户账号
用户账号的初始化配置文件
	新建用户时,从/etc/skel目录中复制而来
	初始配置文件
		~/.profile:每次登录时执行
		~/.bashrc:每次进入新Bash环境时执行===个人
		~/.bash_logout:每次退出登录时执行
	全局配置文件
		/etc/bashrc===公司
		/etc/profile
删除用户账号
	userdel [-r] 用户名
		-r:连用户的宿主目录一并删除
  • 组账号管理
组账号文件
	/etc/group:保存组账号基本信息
	/etc/gshadow:保存组账号密码信息
添加组账号
	groupadd 组账号名
删除组账号
	groupdel 组账号名
  • 用户和组账号查询
查询用户身份标识:id 用户名
查询用户所属的组:groups 用户名
查询用户账号的详细信息:finger [-l] 用户名
查询已登录到主机的用户:users、w、who
  • 图形画用户和组管理工具

2.管理文件/目录的权限和归属

  • 查看文件/目录的权限和归属
访问权限
	读取:允许查看文件内容、显示目录列表
	写入:允许修改文件内容,在目录中新建、移动、删除文件或子目录
	可执行:允许运行程序、切换目录
归属(所有权)
	属主:拥有该文件或目录的用户账号
	属组:拥有该文件或目录的组账号

在这里插入图片描述

  • 设置文件/目录的权限
chmod
	chmod [ugoa] [+-=] [rwx] 文件/目录
		u:属主
		g:属组
		o:其他用户
		a:所有用户
		+:增加权限
		-:去除权限
		=:设置权限
	  chmod nnn 文件/目录
	  	nnn:三位八进制数
	  -R:递归修改指定目录下所有文件,子目录的权限
  • 设置文件/目录的归属
chown
	chown 属主 文件或目录
	chown :属组 文件或目录
	chown 属主:属组 文件或目录
		-R:递归修改指定目录下所有文件,子目录的归属
  • 使用附加权限
SET位权限:争对文件
	主要用途:为可执行文件(有x权限的),权限字符:s
		其他用户执行该文件时,将拥有属组或属主用户的权限
	权限类型:
		SUID:对属主用户增加SET位权限
		SGID:对属组内用户增加SET位权限
	设置
		chmod ug(+/-)s 可执行文件
		chmod o(+/-)t 目录名
粘滞位权限:争对目录
	主要用途:设置公共目录(权限为777的...),权限字符:t
		用户不能删除该目录中其他用户文件
		如:tmp、var/tmp临时目录
	设置
		chmod mnnn 可执行文件
			m=4:SUID
			m=2:SGID
			m=1:粘滞位
			可叠加

进程管理与计划任务

1.引导流程

在这里插入图片描述
请添加图片描述

2.chkconfig --list 服务名称

  • ubuntu中可以安装 sysv-rc-conf 来代替
  • 开启某个服务: chkconfig --level 2345 network on
  • centos 8:
systemctl list-unit-files   查看服务
systemctl enable smb nmb    开启指定服务
systemctl disable smb nmb   关闭指定服务

3.ps aux

  • 查看当前系统中所有的进程及信息
  • ps aux|grep 进程名

4.top命令

  • 查看动态的进程排名信息

5.pstree -aup

  • 进程树

6.进程启动的方式

  • 手工启动
1.前台启动:用户输入命令,直接执行程序
2.后台启动:在命令行尾加入“&”符号
	cp /dev/cdrom mycd.iso &
		将cdrom中的镜像文件挂载到当前用户的home目录下的 mycd.iso中
	head -10 mycd.iso
  • 调度启动
1.使用at命令,设置在某个特定的时间,执行一次任务:     
javascript:setTimeout()
2.使用crontab命令,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务
javascript:setInterval() 

7.进程的前后台调度

  • Ctrl+Z
将当前进程挂起,即调入后台并停止执行
按Q键则退出此进程
  • jobs
查看处于后台的任务列表
  • fg
进程的顺序号
将处于后台的进程恢复到前台运行,需指定任务序号
  • Ctrl+C
中断正在执行的命令
  • kill、killall
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程
	-9 选项用于强制终止
		kill -9 进程编号:强制杀死进程

8.计划任务

  • at命令
在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
	服务脚本名称:/etc/init.d/atd
	设置格式:at [HH:MM] [yyyy-mm-dd]
	然后输入要执行的操作,按ctrl+D结束输入(自动转化为 <EOT>)
	
1.atq命令:查询当前设置的at任务列表
2.atrm命令:删除指定任务编号的at任务
  • crontab命令
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
	服务脚本名称:/etc/init.d/crond
	主要设置文件
		 全局配置文件,位于文件:/etc/crontab 
		 系统默认的设置,位于目录:/etc/cron.*/
		 用户定义的设置,位于文件:/var/spool/cron/用户名
	命令
		crontab  -e  [-u  用户名]:编辑
		crontab  -l  [-u  用户名]:查看
		crontab  -r  [-u  用户名]:删除
  • 时间数值的表示

在这里插入图片描述

时间数值的特殊表示方法
	*  表示该范围内的任意时间
	,  表示间隔的多个不连续时间点
	-  表示一个连续的时间范围
	/  指定间隔的时间频率
这篇关于Linux基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!