您的位置:首页 > 运维架构 > Linux

Linux学习笔记

2020-12-26 00:37 267 查看

作者:Grey

原文地址:

Github

语雀

博客园

Linux的安装

说明:本安装说明是基于Windows10 下VMware安装Linux,Linux版本是CentOS 7

自2020年12月01日起,CentOS社区不再为CentOS 6版本提供安全更新,详情请查看CentOS官方公告

环境

VMware-workstation-full-15.5.2-15785246

CentOS-7-x86_64-Minimal-1908.iso

其他版本的安装可作为参考

安装步骤

打开VMware,

点击创建新的虚拟机,进入新建虚拟机向导,然后依次按照截图步骤进行安装






点击完成即可,在启动过程中,有可能会出现如下错误:

这里是解决方案

点击:编辑虚拟机设置

在CD/DVD这里,选择使用ISO映像文件,选择对应的CentOS的iso文件

点击:开启此虚拟机,然后按如下截图安装
语言选择English

DATE & TIME选择Asia,Shanghai

Software Selection 这里,选择Minimal Install

KDUMP这里,Enable kdump这个选项不要勾选

NETWORK & HOST NAME这里,把Ethernet开关打开

设置Root密码

点击USER CREATION,新建一个管理员账户

**

然后系统会自动安装,安装好了以后,有个Reboot按钮,点击Reboot按钮,即可,Linux安装 ad8 完成

设置HostName

hostnamectl set-hostname sec

使用以上命令,可以把Host Name设置为sec

网络配置

  1. 找到网卡位置:
cd /etc/sysconfig/network-scripts/
  1. 配置网卡协议
vim ifcfg-ens33

注:如无vim,可以执行

yum install -y vim

安装Vim

然后再执行:

vim ifcfg-ens33

删除UUID这一行

重启网卡服务

service network restart

测试:

ping www.baidu.com 查看是否有数据接收到。

快照与克隆

克隆之前,先打快照

  1. 关闭虚拟机
  2. 在节点这里,选择快照->快照管理器

为快照设置一个名字,假设为base,

然后开始克隆,在需要克隆节点上右键:克隆

这里选择创建链接克隆可以节省资源,为克隆的虚拟机设置一个名称,假设叫:node02

克隆完毕

永久关闭SELinux的方法

vim /etc/selinux/config

把SELinux设置为disabled

配置ssh密钥连接Linux

首先Win10系统上需要有OpenSSH,像这样:终端输入ssh

这样就是有的(好像Win10 1809+默认就是有的)。
然后生成密钥对:
ssh-keygen -t rsa
接着按提示信息可根据个人需求选择,这里是默认(连续三个回车即可)。
生成的密钥对默认保存在当前用户的根目录下的.ssh目录中(C:\Users\username.ssh):

接着我们将公钥id_rsa.pub上传至Linux服务器(保存到你要连接的用户根目录下~/.ssh/中,没有.ssh目录则创建):
修改/etc/ssh/sshd_config配制文件,修改以下内容
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no

上传好后,将Linux中的id_rsa.pub重命名为authorized_keys,更改文件权限为600,更改.ssh目录权限为700:
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys
chmod 700 .ssh

然后就可以通过ssh方式连接到Linux

Linux的命令

分为内部命令和外部命令 内部命令(Shell自带的命令)

外部命令(不是Shell自带的命令,由用户安装的)

查看命令是一个什么类型的文件

查看ifconfig命令在哪个位置

whereis ifconfig

什么是Shell? bash shell,就是一个程序,就是Linux系统安装的一个软件

root/密码写对后,直接进入bash shell软件

echo $PATH

内部命令的帮助用help指令,外部命令的帮助用man指令

echo $$: 当前bash shell的进程号

如果平时退出不了某个程序,可以复制一个ssh对话,用ps -ef找到那个进程,用kill -9 退出即可

bash shell在执行命令的时候,做了两步优化:

  1. 通过PATH来
  2. 通过hash来,hash查看,hash -r(清空hash)

Shell

编写脚本时候要赋予该文件执行权限

chmod u+rx filename

如果bash执行,不需要赋予执行权限

bash ./filename.sh
./filename.sh
以上两种执行方式都是新开一个进程

source ./filename.sh
.filename.sh
这种方式执行不会产生新的子进程

#!/bin/bash/
cd /tmp
pwd

输入重定向符号 <

read var < /path/to/a/file

输出重定向 >   >> 2> &>

echo 123 > /path/to/a/file  清空输入
echo 123 >> /path/to/a/file 追加
echo 12343 2> /path/to/a/file 错误输入
echo 122 &> /path/to/a/file 全部输入

#!/bin/bash

cat > /data/m.sh << EOF
echo "hello bash"
EOF

变量赋值

  • a=123
  • let a=10+2
  • l=ls
  • letc=$(ls -l /etc) 或 letc=
    ls -l /etc
  • 变量值有空格等特殊字符可以包括在"" 或 ``中
  • echo ${变量名} 查看变量的值

变量的默认作用范围
默认自己的shell进程中

变量的导出,让子进程获得父进程的变量值

  • export 变量名
    变量的删除
  • unset 变量名

环境变量:每个Shell打开都可以获得的变量

  • set和env命令
  • $? 上一条命令是否正确执行(正确:0, 错误:1)
  • $PATH
  • $PS1

位置变量

  • $1 $2 ... $n
#!/bin/bash

# $1 $2 ...$9 ${10}

echo $1
# 默认打印第二个参数值,如果为空则显示_
echo ${2-_}

环境变量配置文件所在目录

  • /etc/profile
  • /etc/profile.d/
  • ~/.bash_profile
  • ~/.bashr 15b0 c
  • /etc/bashrc

说明:/etc/下的配置文件,表示所有用户通用的配置,用户家目录的配置文件只能特定用户使用,
su - 用户名  login shell 所有都可以执行
su 用户名 nologin shell  /bashrc, /etc/bashrc

所用终端都应用新的环境变量: export PATH=$PATH:/new/to/path
让环境变量立即生效:source /etc/profile

定义数组

# 数组定义
IPTS=(10.0 1.0 3.0)

# 显示数组中所有元素
echo ${IPTS[@]}

#显示数组元素个数
echo ${#IPTS[@]}

显示数组的第一个元素
echo ${IPTS[0]}

Q:

  • 内建命令不需要创建子进程
  • 内建命令对当前shell有效

Linux文件系统


除了/boot的数据,其他目录下的数据都存在了sda3里面了

/var 可变化的文件,比如:日志文件,数据文件

更多文件类型说明见:

## 级联创建目录
mkdir -p a/adir/bdir

mkdir a/adir a/bdir a/cdir
mkdir a/{1,2,3}dir

## 复制文件夹
cp -r a cpp/ ## 将a文件夹复制到cpp文件夹中,复制文件夹用

stat和touch 组合使用,可以增量监控数据改变的时间 linux命令系列 stat & touch

命令积累

与时间服务器上的时间同步

  1. 安装ntpdate工具
yum -y install ntp ntpdate
  1. 设置时间为阿里服务器的时间
ntpdate ntp1.aliyun.com
  1. 将系统时间写入硬件时间
hwclock –systohc

一屏可以显示的文件,可以用cat 一屏显示不出来的内容,用more命令,space翻页,无法回看 使用less 命令就可以往后推(space),按b键往前翻(less是将文件一次性load内存,所以文件大的时候只能用more)

head -n 文件名 前n行的数据 tail -n 文件名 后n行数据 tail -f 文件名 监控文件内容改变

管道命令 cat xxx | head -3 cat xxx作为输出流的形式作为后面命令的输入流

ls -l 无法接受前面的输出流的内容,如果要解决,需要这样用: echo "/" | xargs ls -l

head -5 xxx | tail -1 获取第五行的数据

screen -S yourname ## 新建一个叫yourname的session
screen -ls         ## 列出当前所有的session
screen -r yourname ## 回到yourname这个session
screen -d yourname ## 远程detach某个session
screen -d -r yourname ## 结束当前session并回到yourname这个session

参考资料

Linux命令行大全

Linux就该这么学

Linux预习资料 提取码:7w30

CentOS6.x升级到CentOS7.x的注意事项视频 提取码: yhfd

Linux内核设计与实现

极客时间-Linux实战技能100讲

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: