Linux笔记


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内核

系统的作用:帮助用户管理计算机硬件

系统内核的作用

  1. 管理进程:内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出),不同进程间通讯(通过信号,管道,或者进程间通讯原语)对整个系统功能来说是基本的,也由内核处理。 另外, 调度器, 控制进程如何共享CPU,是进程管理的一部分。更通常地,内核的进程管理活动实现了多个进程在一个单个或者几个CPU 之上的抽象。

  2. 管理内存:计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的。内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间。内核的不同部分与内存管理子系统通过一套函数调用交互,从简单的malloc/free对到更多更复杂的功能。

  3. 文件系统:Unix 在很大程度上基于文件系统的概念;几乎Unix中的任何东西都可看作一个文件。内核在非结构化的硬件之上建立了一个结构化的文件系统,结果是文件的抽象非常多地在整个系统中应用。另外,Linux 支持多个文件系统类型,就是说,物理介质上不同的数据组织方式。例如,磁盘可被格式化成标准Linux的ext3文件系统,普遍使用的FAT文件系统,或者其他几个文件系统。

  4. 设备控制:几乎每个系统操作终都映射到一个物理设备上,除了处理器,内存和非常少的别的实体之外,全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行。这些代码称为设备驱动。内核中必须嵌入系统中出现的每个外设的驱动,从硬盘驱动到键盘和磁带驱动器。内核功能的这个方面是本书中的我们主要感兴趣的地方。

  5. 网络管理:网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件。报文在某一个进程接手之前必须被收集,识别,分发,系统负责在程序和网络接口之间递送数据报文,它必须根据程序的网络活动来控制程序的执行。另外,所有的路由和地址解析问题都在内核中实现。

linux内核在系统中的位置

Linux内核版本介绍

Linux内核官网The Linux Kernel Archives

内核版本说明

2(主版本).6(次版本).18(末版本)

开发版是企业生产的,底层用的还是Linux内核。

linux的发行版本

左为redhat系列,右为debian系列。

主要区别是软件安装方式,类型。

Linux上的开源软件

开源软件的分类

  1. 使用自由
  2. 研究自由
  3. 散布以及改良自由

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选择命令行的原因
  1. 图形界面占用系统资源
  2. 降低稳定性
  3. 符合远程维护需求

linux学习

安装VMware

下载Workstation 16 Pro for Windows

注意:激活密钥自行搜索

系统分区简介

作用:便于文件获取和寻找

原理:把大硬盘分为小的逻辑分区

能写入数据的只有主分区逻辑分区

主分区只能存在4个

格式化是一种让数据可以被系统识别的手段,分成一个个数据块,可以想象成柜子的打格

硬件设备文件名:(linux要分配设备文件名才能使用)

dev是硬件目录,在根目录下

linux称分区分配盘符的过程为挂载,盘符称为挂载点

swap分区可以理解为虚拟内存

boot分区为启动分区,可以单独分开,防止根写满无法启动

文件系统结构:

linux分区的每个目录都是根目录子目录,可以拥有单独的磁盘空间

Centos7系统安装

VMware按F2进入BIOS

全屏快捷键ctrl+alt+回车

密码原则

  1. 复杂性(包含大小写字符)

  2. 易记性(选择一些对你有意义的话)

  3. 时效性(经常更改)

基本分区结构

软件包选择

  1. Desktop (桌面)
  2. Minimal Desktop (最小化桌面)
  3. Minimal ( 最小化)
  4. Basic Server (基本服务器)
  5. DatabaseServer(数据库服务器)
  6. Web Server (网页服务器)
  7. Virtual Host (虚拟主机)
  8. software development workstation (软件开发工作站)

安装日志

  1. /rootinstall.log:存储了安装在系统中的
    软件包及其版本信息
  2. /root/install.log.syslog:存储了安装过程中
    留下的事件记录
  3. /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

注意

  1. 永久关闭SElinux需要重启主机生效。

  2. 如果主机是生产环境不能重启,但又要实现永久关闭SElinux:

    1. 先做临时关闭
    2. 修改其配置文件实现永久关闭,但不需要重启主机
配置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写入即可连接

常见的连接工具有xshellfinalshellmobaxterm

**什么是shell(壳)**:

shell是系统的用户界面

什么是GUI

图形界面称GUI,字符界面称CLI

windowsGUI是资源管理器称

linuxGUIGNOMEKDE,统称X window

换源

Ubuntu

  1. 获取Ubuntu版本
lsb_release -a
  1. 备份源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
  1. 使用vi修改源
sudo vi /etc/apt/sources.list
  1. 更新源
sudo apt-get update && apt-get upgrade -y

CentOS

设置yum源指向本地

介绍

  1. RedHat系列系统安装包时使用rpm安装rpm包需要安装依赖,yum会检测依赖并自动化安装

  2. Debian系列系统安装包时使用deb安装deb包需要安装依赖,apt-get会检测依赖并自动化安装

  3. 挂载镜像

# 临时挂载
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 		#查看是否挂载
  1. 尝试使用rpm安装
cd /mnt/Packages
ls
rpm -ivh vim-common-7.4.160-2.el7.x86_64.rpm # 这时会要求安装依赖
  1. 使用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的系统特性

  1. 一切皆文件
  2. 整个系统是由很多小程序组成的
  3. 尽量避免与用户交互
  4. 使用纯文本文件保存信息

基本界面

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内容:蓝色代表目录,无色代表文件

详细内容的含义:

第一组,首字符意思:

  1. -代表普通文件
  2. d代表目录
  3. l代表链接(快捷方式)
  4. c代表字符设备(键盘鼠标)
  5. 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+ 等

[]匹配指定范围内单个任意字符,例如:

  1. [edf]表示范围edf
  2. [0-9]表示范围0-9
  3. [!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的三个文件

命令调用技巧

  1. 无法记住完整的命令路径按下tab自动补全,按两下可以列出指定字符开头的命令或路径,例如:

    system #tab2连击可以列出所有以system开头的命令
    #system-config-abrt  systemd-coredumpctl等
  2. 调用上条命令,按下键即可

  3. 调用上条命令的路径,输入!$,例如:

    ls -l !$

    或者在写完的命令后按ESC+.

  4. 查询命令的历史记录,输入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 重做最后一次所撤销的操作

输入模式操作:

  1. i:当前字符之前插入 (光标前)

  2. I:行首插入 (行首)

  3. a:当前字符之后插入 (光标后)

  4. A:行尾插入(行尾)

  5. o:下一行插入 (另起一行)

  6. 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)

  1. 学信系统
  2. 校园系统
  3. 网站系统

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

文章作者: wqa
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 wqa !
  目录