linux大介绍
UNIX主要发行版本
操作系统 | 公司 | 硬件平台 |
---|---|---|
AIX | IBM | PowerPC |
HP-UX | HP | PA-RISC |
Solaris | Sun | SPARC |
Linux | Red Hat, Ubuntu | IA(Intel, AMD, Cyrix, RISE) |
Solaris是我们可以学习的unix操作系统,另外两个无法在家用机安装。
Linux发展历史
Linux系统诞生于1991年,由芬兰大学生李纳斯(Linus Torvalds)和后来陆续加入的众多爱好者共同开发完成
Linux简介
linux是unix的子分支,mac os是类unix操作系统
linux是unix的开源软件。
linux可以称为lin ux,是李纳斯独自开发的。
linux企鹅作为图标,是象征着南极,那里不属于任何国家。这也寓意了linux不属于任何公司,任何人都可以获得linux开发的成果。
Linux内核
系统的作用:帮助用户管理计算机硬件
系统内核的作用:
管理进程:内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出),不同进程间通讯(通过信号,管道,或者进程间通讯原语)对整个系统功能来说是基本的,也由内核处理。 另外, 调度器, 控制进程如何共享CPU,是进程管理的一部分。更通常地,内核的进程管理活动实现了多个进程在一个单个或者几个CPU 之上的抽象。
管理内存:计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的。内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间。内核的不同部分与内存管理子系统通过一套函数调用交互,从简单的malloc/free对到更多更复杂的功能。
文件系统:Unix 在很大程度上基于文件系统的概念;几乎Unix中的任何东西都可看作一个文件。内核在非结构化的硬件之上建立了一个结构化的文件系统,结果是文件的抽象非常多地在整个系统中应用。另外,Linux 支持多个文件系统类型,就是说,物理介质上不同的数据组织方式。例如,磁盘可被格式化成标准Linux的ext3文件系统,普遍使用的FAT文件系统,或者其他几个文件系统。
设备控制:几乎每个系统操作终都映射到一个物理设备上,除了处理器,内存和非常少的别的实体之外,全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行。这些代码称为设备驱动。内核中必须嵌入系统中出现的每个外设的驱动,从硬盘驱动到键盘和磁带驱动器。内核功能的这个方面是本书中的我们主要感兴趣的地方。
网络管理:网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件。报文在某一个进程接手之前必须被收集,识别,分发,系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,所有的路由和地址解析问题都在内核中实现。
linux内核在系统中的位置:
Linux内核版本介绍:
Linux内核官网:The Linux Kernel Archives
内核版本说明:
2(主版本).6(次版本).18(末版本)
开发版是企业生产的,底层用的还是Linux内核。
linux的发行版本
左为redhat
系列,右为debian
系列。
主要区别是软件安装方式,类型。
Linux上的开源软件
开源软件的分类:
- 使用自由
- 研究自由
- 散布以及改良自由
linux里有更多的服务器软件,更适合当服务器系统,同时因为代码是开放的,更具安全性。
Linux和Windows的安全性比较
windows服务器版全补丁安全等级为c1,linux不做防护为c1,打补丁为b级。
原因:window是面向个人用户,服务器端已经走下坡路了
支撑互联网的开源技术
LAMP:
Linux 操作系统
Apache Web服务器
MySQL 数据库
PHP 编程语言
LMNP:
Linux 操作系统
nginx Web服务器
MySQL 数据库
PHP 编程语言
Linux应用领域
网站服务器:腾讯,阿里,微软服务器
嵌入式开发:安卓底层也是Linux,属于Linux嵌入应用
电影工业:拍摄电影的数据处理等
linux选择命令行的原因
- 图形界面占用系统资源
- 降低稳定性
- 符合远程维护需求
linux学习
安装VMware
下载:Workstation 16 Pro for Windows
注意:激活密钥自行搜索
系统分区简介
作用:便于文件获取和寻找
原理:把大硬盘分为小的逻辑分区
能写入数据的只有主分区和逻辑分区
主分区只能存在4个
格式化是一种让数据可以被系统识别的手段,分成一个个数据块,可以想象成柜子的打格
硬件设备文件名:(linux要分配设备文件名才能使用)
dev是硬件目录,在根目录下
linux称分区分配盘符的过程为挂载,盘符称为挂载点
swap分区可以理解为虚拟内存
boot分区为启动分区,可以单独分开,防止根写满无法启动
文件系统结构:
linux分区的每个目录都是根目录的子目录,可以拥有单独的磁盘空间
Centos7系统安装
VMware按F2
进入BIOS
全屏快捷键ctrl
+alt
+回车
密码原则
复杂性(包含大小写字符)
易记性(选择一些对你有意义的话)
时效性(经常更改)
基本分区结构
软件包选择
- Desktop (桌面)
- Minimal Desktop (最小化桌面)
- Minimal ( 最小化)
- Basic Server (基本服务器)
- DatabaseServer(数据库服务器)
- Web Server (网页服务器)
- Virtual Host (虚拟主机)
- software development workstation (软件开发工作站)
安装日志
- /rootinstall.log:存储了安装在系统中的
软件包及其版本信息 - /root/install.log.syslog:存储了安装过程中
留下的事件记录 - /rootanaconda-ks.cfg:以Kickstart配置文
件的格式记录安装过程中设置的选项信息
kickstart配置文件记录了无人值守安装的过程,这相当于复制了一台已经装好的linux服务器
远程登录管理工具
设置centos网卡
配置静态网络
cd /etc/sysconfig/network-scripts
# 如果改错了就无法连接xshell,所以先备份一下
cp ifcfg-ens33 ifcfg-ens33.bak
vim ifcfg-ens33
#网卡配置表
TYPE="Ethernet" #网卡类型:以太网
PROXY_METHOD="none" #代理方式:无
BROWSER_ONLY="no" #只是支持浏览器:否
BOOTPROTO="dhcp" #网卡协议:DHCP
DEFROUTE="yes" #默认路由:是
IPV4_FAILURE_FATAL="no" #是否开启IPV4致命错误检测:否
IPV6INIT="yes" #IPV6是否自动初始化:是
IPV6_AUTOCONF="yes" #IPV6是否自动配置:是
IPV6_DEFROUTE="yes" #IPV6默认路由:是
IPV6_FAILURE_FATAL="no" #是否开启IPV6致命错误检测:否
IPV6_ADDR_GEN_MODE="stable-privacy" #IPV6地址生成模型
NAME="ens33" #网卡名字(与DEVICE- 致)
UUID="2f9f23c3-d3cf-40fd-8987-4cb1ddaa6e38" #唯一标识码
DEVICE="ens33" #网卡设备
ONBOOT="yes" #是否激活网卡
改为如下字段:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
IPADDR=192.168.245.135 #写自己网段的静态地址,vmware可以在虚拟网络管理器看nat模式
GATEYWAY=192.168.245.2 #写自己网关的静态地址,在NAT设置查看
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2f9f23c3-d3cf-40fd-8987-4cb1ddaa6e38"
DEVICE="ens33"
ONBOOT="yes"
:wq #保存
systemctl restart network #重启网络
配置主机名
hostname (主机名) #临时性命令,重启失效
# 永久更改主机名
vi /etc/hostname
dongruan1
配置防火墙
systemctl status firewalld # 查看防火墙状态
systemctl stop firewalld # 配置停止防火墙
systemctl disable firewalld # 配置防火墙停止重启自动开启
systemctl status firewalld # 查看防火墙是否关闭
firewall-cmd --zone=public --add-port=80/tcp --permanent #防火墙放行80端口
# 配置系统服务时使用 system 服务名 操作
# 服务名: firewall
# 操作: enable disable start stop restart
配置安全策略(SELinux)
getenforce # 查看安全策略
setenforce 0 # 临时关闭SElinux
getenforce # 查看安全策略是否关闭
# 永久关闭SElinux
vim /etc/selinux/config
SELINUX= disabled
注意:
永久关闭SElinux需要重启主机生效。
如果主机是生产环境不能重启,但又要实现永久关闭SElinux:
- 先做临时关闭
- 修改其配置文件实现永久关闭,但不需要重启主机
配置DNS
vim /etc/resolv.conf
写入以下内容:
nameserver 8.8.8.8 # dns地址
search localdomain # 搜索网关
VMware网络配置
在VMware找到编辑选项,进入虚拟网络编辑器,点击更改设置即可调整
桥接:利用真实网卡,可以直接和真机通信,但是要占用IP地址。
桥接设置的IP要和真机网段相同
net:net能访问互联网,相当于VMware做了一个net(网络地址转换)
host-only:host-only只能和本机通信
sudo su #获取root权限
ifconfig #检查ip
ifconfig ens33 192.168.110.2 #(设置一个ip)
#centos7会给没有设置网卡名称的自动设置,例如br0
#在ifconfig中检查192网段的地址,就是这台linux的地址
使用ssh远程工具连接linux
找到ens33网卡的IP写入即可连接
常见的连接工具有:xshell,finalshell,mobaxterm
**什么是shell(壳)**:
shell
是系统的用户界面
什么是GUI:
图形界面称GUI
,字符界面称CLI
windows
的GUI
是资源管理器称
linux
的GUI
是GNOME
和KDE
,统称X window
换源
Ubuntu
- 获取Ubuntu版本
lsb_release -a
- 备份源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
- 使用vi修改源
sudo vi /etc/apt/sources.list
- 更新源
sudo apt-get update && apt-get upgrade -y
CentOS
设置yum源指向本地
介绍:
RedHat系列系统安装包时使用rpm安装rpm包需要安装依赖,yum会检测依赖并自动化安装
Debian系列系统安装包时使用deb安装deb包需要安装依赖,apt-get会检测依赖并自动化安装
挂载镜像
# 临时挂载
ll /mnt # 再查看挂载区
mount /dev/sr0 /mnt #挂载命令是临时性的
ll /mnt # 再查看挂载的是不是镜像的内容
df -h # 查看硬件
# 永久挂载
vi etc/fstab
插入dev/sr0
/dev/mapper/centos-root / xfs defaults 0 0
UUID=1bfb16ea-82d5-4db2-99b2-4800722dbf9a /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0
/dev/sr0 /mnt iso9660 defaults 0 0
注意:格式不能写错,否则无法开机。需要重新在启动界面输入root密码,在命令行更改:
vi etc/fatab #修改
ll /mnt #查看是否挂载
- 尝试使用rpm安装
cd /mnt/Packages
ls
rpm -ivh vim-common-7.4.160-2.el7.x86_64.rpm # 这时会要求安装依赖
- 使用yum安装
cd /etc/yum.repos.d/
ls # 此时显示的是yum源的配置存放地,这些配置全都指向官网
# 现在弄一个本地的
# 先备份
mkdir bak #创建bak
mv * bak #把当前的文件移动到bak
vi local.repo # 创建local.repo文件
创建repo:
[dongruan]
name=this is a local.repo #简介
baseurl=file://mnt #定义仓库路径
enabled=1 #开启仓库
gpgcheck=0 #关闭密钥
:wq
使用创建好的本地repo安装vim:
yum list #查看仓库软件
yum repolist #查看有多少个软件包
yum install vim #yum调用仓库安装vim,解决依赖关系
设置yum源指向阿里
设网络置源时尽量去官网找链接:阿里镜像站
这里说一下大概的步骤:
# 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #给你的镜像源换个名字
# 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 更新缓存
yum clean all #清理源缓存
yum makecache #创建新缓存
# 更新yum
yum update -y
linux命令格式
#命令名[选项][参数]
#命令名是描述命令功能的英文单词的缩写
#选项是选择命令的功能,通常以‘-’开头。当有多个选项时可以只写一个‘-’,如:‘ls -l -a’与ls -la相同。另外部分选项以‘--’开头,如‘ls --help’
#参数是你要处理的对象
linux的系统特性
- 一切皆文件
- 整个系统是由很多小程序组成的
- 尽量避免与用户交互
- 使用纯文本文件保存信息
基本界面
root:用户名称
localhost:主机名称
**~**:家目录
基本操作
快捷键
#使用tab键自动补全
#使用ctrl+c键强制终止
#使用ctrl+l键清屏,与clear相同
#使用ctrl+u清除光标前面的内容
#使用ctrl+l清除光标后面的内容
#使用↑键列出上一条命令
linux命令、通配符、技巧
所有命令都可以在后面添加--help
来查看命令功能
查看IP命令
ifconfig
ip address
查看当前路径
pwd
文件目录操作命令
查看磁盘占用
df -h
tmpfs:内核文件
文件查看命令
ls -l /*** = ll #文件查看命令
-l #显示详细信息
-a #显示隐藏信息
-d #显示文件属性
-h #人性化显示文件大小
ls内容:蓝色代表目录,无色代表文件
详细内容的含义:
第一组,首字符意思:
-
代表普通文件d
代表目录l
代表链接(快捷方式)c
代表字符设备(键盘鼠标)b
代表块设备(硬盘)
第二组:被硬链接的次数,文件默认为1,目录默认为2
第三组:文件所有者
第四组:文件所属组
第五组:文件的大小,只显示目录大小
第六组:修改时间
第七组:文件名
创建文件
touch a #创建一个空白文件
touch a b c #一次性创建多个文件
touch a{1..100}.txt #创建a1-a100的文件
mkdir text #创建一个空目录(make dictory)
mkdir -p x/y/z #一次性创建多级目录
mkdir a b c #一次性创建多个目录
rmdir a #删除空目录(remove dictory)
rm a #删除文件(remove)
rm -f #强制删除文件,无需确认(force)
rm -r #删除目录
rm -rf #强制删除目录
rm -rf .* #删除目录内所有文件(包括隐藏文件)
复制,移动文件
cp 源文件 目标文件 #复制文件(copy)
cp /etc/fstab /tmp #复制文件不改名
cp /etc/fstab /tmp/hi.txt #复制文件改名成hi.txt
cp -r /home /tmp/test/ #把home目录复制到指定目录,不使用-r(递归)会掠过
cp -p #保持使用权限不变
mv 源文件名 更改后的文件名 #更改文件名,移动目录不需要参数
通配符
*
可以匹配任意数量的任意字符,例如:
ls -d /etc/pa* #表示找etc下所有以pa开头的文件
#path path1 path-2 等
?
可以匹配相应位置的单个任意字符,例如:
ls -d /etc/pa? #表示找etc下所有pa+(任意字符)的文件
#pat pa2 pa+ 等
[]
匹配指定范围内的单个任意字符,例如:
- [edf]表示范围edf
- [0-9]表示范围0-9
- [!edf]表示非def的范围
ls -d /dev/[df]?? #表示找dev下所有d&f+?+?的文件
#dvd fb0 dcd 等
ls -d /dev/??[0-9] #表示找dev下?+?+0到9的文件
#aa1 bb2 ca4 等
ls -d /dev/[!fhi]* #表示开头不能是fhi的文件,!表示取反
{}
可以包含一个以逗号分隔的路径列表(非通配符)
mkdir /tmp/{a,b,c}
#表示批量创建了/tmp/a /tmp/b /tmp/c的三个目录
touch /tmp/{a,b,c}.txt
#表示批量创建了/tmp/a.txt /tmp/b.txt /tmp/c.txt的三个文件
命令调用技巧
无法记住完整的命令或路径按下
tab
自动补全,按两下可以列出指定字符开头的命令或路径,例如:system #tab2连击可以列出所有以system开头的命令 #system-config-abrt systemd-coredumpctl等
调用上条命令,按下
↑
键即可调用上条命令的路径,输入!$,例如:
ls -l !$
或者在写完的命令后按
ESC+.
查询命令的历史记录,输入
history
即可
文件内容操作命令
查看文件内容
cat #查看文件内容,链接多个文件内容(concarebate),只能查看文本信息,不能查看可执行文件
cat /etc/sudoers #显示sudoers的纯文本信息
cat /etc/redhat-release #查看文件系统版本
uname -a #可以查看系统信息,例如kernel内核版本
cat -n #显示文本添加行号
cat 文件名 |grep 关键字 #查看文件内容并筛选出关键词
#管道(|):获取上一个命令的结果作为下一个命令的输入
more #查看文件内容,分页显示满屏暂停,空格翻页,回车加行,不能往上看
less #查看文件内容,不会自动退出,按q退出
head #查看文件的前10行
head -3 #查看文件的前3行
tail #查看文件最后10行
tail -f #实时查看文件新增内容,排错专用
tail -f /var/log/messages #动态查看实时日志信息
统计,输出内容
wc #统计行数、单词数、字节数(word count)
wc -l #统计行数
echo #意思为显示
echo #输出内容
echo 'hello world!' #输出hello world!在屏幕
echo 'hello world!' > a.txt #把hello world!覆盖重定向输出至a.txt,没有该文件则创建该文件
#覆盖重定向(>): 把前面的内容覆盖到后面的内容
#追加重定向(>>):把前面的内容追加到后面的内容
#未终止符(\): 不结束输入,直到用户自己结束
查找文件内容
grep "root" /etc/password #查找possword文件里包含root的内容
grep -n "root" /etc/password #显示行号
grep -v "root" /etc/password #显示不包含root的内容
grep -v "^$" /etc/fstab #查看文件不是空白行的内容
grep -w "num" #精确匹配单词
grep -r 'pass' #递归查找当前目录下所有包含pass的文件
grep "^root" /etc/password #找possword文件里开头为root的内容
grep "root$" /etc/password #找possword文件里结尾为root的内容
grep命令只支持正则表达式(不支持通配符):
以word开头:^
+word
以word结尾:word+$
默认区分大小写:grep
比较文件内容
diff 文件1 文件2 #比较文件文本的不同(different)
cp .bashrc .bashrc.bak #复制启动项文件
diff .bashrc .bashrc.bak #每次开机检查启动项是否被修改
显示结果中:a,d,c分别代表增加、删除、修改
<
属于前面的文件,>
属于后面的文件
写入文件内容
#把内容导入到a.txt
cat > a.txt << eof #这里的eof是结束标志,对应下面输入eof结束
123
abc
709
eof #输入eof结束
echo "\
日期和时间相关命令
查询年月日
date +%F #查询年月日格式
date --help #帮助里有很多格式
cp /etc/passwd /tmp/passwd.bak.$(date +%F)#备份passwd文件并加上.日期
hwclock #查询CMOS(BIOS)硬件时钟
cal 2021 #显示2021的日历
cal 1 2021 #显示2021年一月的日历
查看文件元数据
stat text.txt #查看文件元数据(windows的属性)
元数据:文件使用权限,大小,文件名称、属性等。
**最近访问时间(access time)**:查看、读取文件内容的时间。
**最近更改时间(modify time)**:文件元数据改变的时间。
**最近改动时间(change time)**:文件元数据改变的时间。
文件查找命令
简介:与grep不同,locate相当于windows的搜索。但是locate依赖于搜索数据库,无法对新建文件进行查找,也无法掠过刚删除的文件。有滞后性。
注意:查找文件一般用find命令!
locate ssd_config #快速的文件查找命令
find [查找起始路径][选项][查找条件][处理动作]
find /etc -name "passwd" #查找名字叫passwd的文件
find /etc -name "*passwd*" #多级(递归)查找名字里含有pass的文件
find /etc -iname "passwd" #忽略大小写查找名字叫passwd的文件
find -empty /root #查找空目录
按文件类型查找:普通文件(f)、目录(d)、符号链接文件(l)、块设备文件(b)、字符设备文件(c)等。
find /boot -type d #查找子目录
处理动作用法:
find /boot -type d -ls #查看boot文件的详细信息
find /boot -empty -type d #查看空目录
find /boot -empty -type f #查看空文件
find /boot -ctime -1 #查看最近一天改动的文件
find /boot -cmin -60 #查看最近一个小时改动的文件
find /etc -name "*ssh*" -type f -exec cp {} /tmp/ssh \;#把查到到的结果复制到tmp/ssh里,其中{}代表查找到的结果, \;表示结束
find /tmp -name "*.txt" -exec rm -f {} \; #把tmp文件下的所有以txt后缀的文件全删除
rm -f /tmp/*.txt #只能删除tmp文件里的.txt文件
xargs命令——find辅助命令
vi(vim)编辑器
默认在命令模式
按a、i、o
进入输入模式
按:
键进入末行模式
命令模式操作:
光标移动
操作类型 | 操作键 | 功能 |
---|---|---|
光标方向移动 | ↑,↓,←,→ | 上,下,左,右 |
翻页 | Page Down或Ctrl+F | 向下翻动一整页内容 |
Page Up或CtrI+B | 向上翻动一整页内容 | |
行内快速跳转 | Home 键或^ 、数字0 |
跳转至行首 |
End 键或$ 键 |
跳转至行尾 | |
#→ | 向右移动#个字符 | |
#← | 向左移动#个字符 | |
行间快速跳转 | 1G或者gg | 跳转到文件的首行 |
G | 跳转到文件的尾行 | |
#G | 跳转到文件中的第#行 | |
行号显示 | :set nu | 在编辑器中显示行号 |
:set nonu | 取消编辑器中的行号显示 |
复制,粘贴,删除
操作类型 | 操作键 | 功能 |
---|---|---|
删除 | x或Del 键 |
删除光标处的单个字符 |
dd | 删除当前光标所在行 | |
#dd | 删除从光标处开始的行内容 | |
d^ | 删除当前光标之前到行首的所有字符 | |
d$ | 删除当前光标处到行尾的所有字符 | |
复制 | yy | 复制当前行整行的内容到剪贴板 |
#yy | 复制从光标处开始的行内容 | |
粘贴 | p | 将缓冲区中的内容粘贴到光标位置处之后 |
文件内容查找
操作键 | 功能 |
---|---|
/word | 从上而下在文件中查找字符串“word” |
?word | 从下而上在文件中查找字符串”word” |
n | 定位下一个匹配的被查找字符串 |
N | 定位上一个配的被查找字符串 |
撤销编辑
操作键 | 功能 |
---|---|
u | 按一次取消最近的一次操作 多次重复按u健,恢复已进行的多步操作 |
U | 用于取消对当前行所做的所有编辑 |
Ctrl+r | 重做最后一次所撤销的操作 |
输入模式操作:
i:当前字符之前插入 (光标前)
I:行首插入 (行首)
a:当前字符之后插入 (光标后)
A:行尾插入(行尾)
o:下一行插入 (另起一行)
O:上一行插入(上一行插入)
末行模式操作:
功能 | 命令 | 备注 |
---|---|---|
保存文件 | :w | |
:w /root/newfile | 另存为其他文件 | |
退出vi | :q | 未修改退出 |
:q! | 放弃修改并退出 | |
保存文件退出vi | :wq |
可视模式操作:
除了上述三种常规模式之外,vi编辑器还有一种种可视模式,由于操作较为简单,所以略作介绍。
在命令模式下按下v键便可以进入可视模式,此时左右移动方向键,就会将光标所经过区域的字符选中,然后可以用y键进行复制,用d键进行删除,或是用p键进行粘贴。不论执行何种操
作,在操作结束之后,都会自动退出可视模式。
开关机命令
shutdown命令
简介:会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。
shutdown # 关机
shutdown now # 马上关机
shutdown 13:20 # 在13:20分关机
shutdown -H now # 停止机器
shutdown -r 09:35 # 在09:35am重启机器
shutdown -c # 取消任何shutdown命令
halt命令
简介:通知硬件来停止所有的 CPU 功能,但是仍然保持通电。你可以用它使系统处于低层维护状态。
halt # 停止机器
halt -p # 关闭机器
halt --reboot # 重启机器
poweroff命令
简介:会发送一个 ACPI 信号来通知系统关机。
poweroff # 关闭计算机
poweroff --halt # 停止机器
poweroff --reboot # 重启机器
reboot命令
reboot # 重启机器
reboot --halt # 停止机器
reboot -p # 关闭机器
init命令及7个启动级别
#0 系统停机模式
init 0 #关机
#1 单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录
init 1
#2 多用户模式,没有NFS和网络支持
init 2
#3 完整的多用户文本模式,有NFS和网络,登陆后进入控制台命令行模式
init 3
#4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置
init 4
#5 图形化模式,登陆后进入图形GUI模式,X Window系统
init 5
#6 重启模式,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启
init 6
修改上海时区
# timedatectl # 查看系统时间方面的各种状态
Local time: 四 2014-12-25 10:52:10 CST
Universal time: 四 2014-12-25 02:52:10 UTC
RTC time: 四 2014-12-25 02:52:10
Timezone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
# timedatectl list-timezones # 列出所有时区
# timedatectl set-local-rtc 1 # 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
# timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海
其实不考虑各个发行版的差异化, 从更底层出发的话, 修改时间时区比想象中要简单:
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
编写shell脚本
#!/bin/bash
time1=%(date)
echo 当前操作系统为:
cat /etc/redhat-release
echo -e "\033[32;40m当前时间为: $time1\033[0m"
echo -e "\033[32;40m选择功能\033[0m"
echo -e "\033[31;40m1. 备份并配置静态IP\033[0m"
echo -e "\033[31;40m2. 配置主机名\033[0m"
echo -e "\033[31;40m3. 关闭防火墙\033[0m"
echo -e "\033[31;40m4. 备份并关闭selinux\033[0m"
echo -e "\033[31;40m5. 挂载镜像\033[0m"
echo -e "\033[31;40m6. 配置本地yum指向镜像\033[0m"
echo -e "\033[31;40m6. 配置阿里云yum\033[0m"
read number
if [$number == 1]
then
#备份网络配置文件
cp /etc/sysconfig/ network- scripts/ifcfg-ens33 /etc/sysconfig/ network- scripts/ ifcfg-ens33. bak
#自定义配置静态IP
read -p "请输入ip地址:" a
read -p "请输入网关地址:" b
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << today
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=$a
GATEWAY=$b
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
today
#配置主机名
read -p "请输入主机名:" c
echo "$c" >/etc/hostname
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#备份selinux配置文件
cp /etc/selinux/config /etc/selinux
#关闭selinux
echo " \
SELINUX=disabled
SELINUXTYPE=targeted " >/etc/seliunx/config
#永久挂载
echo "/dev/sr0 /mnt iso9660 defaults 0 0" >> /etc/fstab
#备份原有yum仓库
cd /etc/ yum. repos.d
mkdir bak
mv * bak
#配置本地yum源
echo
[local]
name= this is a local.repo
baseurl=file:///mnt
enabled=1
gpgcheck=0 " >/etc/yum.repos.d/local.repo
#配置网络yum源
curl -0 /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/ repo/Centos-7.repo
yum makecache
yum install -y wget vim
#配置重启
reboot
安装数据库
yum search mariadb # 查找mysql包
yum install mariadb maridb-server -y # 安装mysql
systemctl status mariadb # 查看mysql状态
systemctl start mariadb # 启动mysql
cd
mysql_secure_installation # 数据库安全初始化
# 设置密码
# 关闭匿名用户
# 不允许root远程登陆
# 移除测试数据库
# 重新加载权限表
show databace # 列出数据库
mysql -uroot -p
远程连接数据库
select user,host form mysql.user;
use mysql;
show tables;
select * from user\G;
update mysql.user set host="%" where host='localhost'; # 把表里所有用户的localhost改为%
select user,host from mysql.user; #
flush
关于系统
简介:常见的架构有LAMP(阿帕奇),LNMP(nginx),LNMT(Tomcat)
- 学信系统
- 校园系统
- 网站系统
linux编译安装python3.10
安装依赖
yum -y groupinstall "Development tools"
yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
yum install -y openssl-devel openssl11-devel
下载python3.10.6
进入官网查看版本:https://www.python.org/ftp/python/3.10.6
使用linux下载:
yum -y install wget
wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz
进入源码目录:
# 解压
tar xvzf Python-3.10.6.tgz
cd Python-3.10.6
# 安装编译安装的依赖
yum update -y
yum groupinstall -y 'Development Tools'
yum install -y gcc openssl-devel bzip2-devel libffi-devel
# 编译安装
./configure prefix=/usr/local/python3 --enable-optimizations
make && make install
# 验证安装
/usr/local/bin/python3.10 --version
/usr/local/bin/pip3.10 --version
配置快捷命令
# 设置软连接来配置快捷命令
ln -sf /usr/local/bin/python3.10 /usr/bin/python3
ln -sf /usr/local/bin/pip3.10 /usr/bin/pip3
安全命令
查看命令历史
history #可以查看之前输入过的命令
查看正在使用的端口
netstat -tnlp
解决Ubuntu无法使用root登录
首先解决无法ssh使用root账户:
# 安装openssh
sudo apt-get install openssh-server
# 查看SSH是否启动
ps -e | grep ssh
# 如果只有ssh-agent表示还没启动
/etc/init.d/ssh start
# 进入编辑sshd_config配置文件
# 这里一定要添加sudo,因为这个文件是只读的
sudo vim /etc/ssh/sshd_config
# 找到 #PermitRootLogin Prohibit-password #这句话本来就是注释了的,不用管
# 这里使用/#Permit可以在vim的命令模式中查找
# 在下面新添加
PermitRootLogin yes
# 重启ssh服务
service sshd restart
然后重设root账号的密码:
sudo passwd root #回车
New password: #输入root新密码
Retype new password: #再次输入root密码
passwd: password updated successfully #密码更新成功
验证root账户的密码:
sudo su