Linux开端---Centos
Linux-Centos
虚拟化所需工具:https://pan.baidu.com/s/1643-kYcx9oPGnGEZM1pLOw?pwd=g0v5 提取码:g0v5
问题解决
-
正常注册网络适配器
主要原因:原先已经安装过虚拟机,卸载后存在注册表残留,使得安装的新虚拟机无法正常注册网络适配器。
下载软件:ccleaner
下载地址:https://www.ccleaner.com/ccleaner/download/standard
使用该软件清理注册表即可
-
WARNING!The remote SSH server rejected X11 forwarding request.
- 截图
-
解决
X11 forwarding依赖xorg-x11-xauth软件包,安装xorg-x11-xauth软件包。
yum install xorg-x11-xauth -y
,安装后重新连接即可
基础包
# 解决在7的版本中没有ifconfig命令,加上-y不用手动确认
yum install net-tools
yum install net-tools -y
# 两下tab自动补齐
yum install bash-completion -y
# 联网下载文件
yum install wget -y
wget file_addr # 有-O参数,指定下载地址
# 以树状显示目录结构命令tree
yum install tree -y
# 解决报错:WARNING!The remote SSH server rejected X11 forwarding request.
yum install xorg-x11-xauth -y
# 文件编辑工具
yum install vim -y
# 上传下载
yum install lrzsz -y
快捷键
Ctrl + a # 光标跳转至正在输入的命令行的首部
Ctrl + e # 光标跳转至正在输入的命令行的尾部
Ctrl + c # 终止前台运行的程序
Ctrl + d # 在shell中,ctrl-d表示推出当前shell。
Ctrl + z # 将任务暂停,挂至后台
Ctrl + l # 清屏,和clear命令等效。
Ctrl + k # 删除从光标到行末的所有字符
Ctrl + u # 删除从光标到行首的所有字符
Ctrl + r # 搜索历史命令, 利用关键字,Tab建选中,只能找到最近的一条
Ctrl + w # 按单词或空格进行向前删除
Ctrl + 左右建 # 按单词或空格进行向前向后跳
# 在命令行前加面加 "#" 则该命令不会被执行
基础命令
# 查看Linux内核版本
cat /proc/version
or
uname -a
# 查看Linux系统版本
cat /etc/redhat-release
# 查看主机名
hostname
井号:通常指超级管理员
$:普通用户
# 创建用户
useradd username
passwd password
# 切换用户
su - username
# 当前用户的家目录
~
# 回到家目录
cd
# 查看当前路径
pwd
# 切换目录
cd *
# 查看当前目录下的文件
ls
ls -a # 查看隐藏文件 或 ls --all
# 查看详细
ll
ll -a
# 命令缩写用-,全写用--
# 查看命令历史
history
!数字 # 快速执行数字那一行
!yum # 快速执行最近一条yum命令
history -c # 清空所有记录(连到人家服务器,操作完了,执行一下)
history -w # 可以把 历史记录写到用户家路径的.bash_history文件中
> filename # 清空文件
# 重启网卡
systemctl restart network
# 查看硬盘使用情况
df -h
# 统计文件夹使用情况及空间大小
du -sh /usr/
# 查看登录日志
cat /var/log/secure
# 查看所有程序
ps aux
ps aux | head -n5 # 查看前五条
# 下载
wget -O 路径(可选) 地址
# 测试连通性
curl www.baidu.com
# 文本查看,分页
less、more(百分比):less /etc/services
# 查找命令
grep 'nq' /etc/services # 查看文件中有nq的行
# 翻页
ctrl+b:下翻页,ctrl+f:上翻页
# 上传下载 (4g以内)
rz:上传,选择文件直接上传
sz:sz 文件路径 可以下载到当前主机
# 排序
sort 文件名 # 对文件内容排序
# uniq 去重,连续挨着的才能去,所以要跟sort连用
sort 文件名 | uniq
# 分割截取
cut -d " " -f2,5 文件名 # 把字符串按“ ” 分割,取出第2和第5个
"""文件属性和类型"""
# 以人性化显示,kb,gb
ll -h, ll /etc/services -h
# 文件类型
- # 普通文件(文本, 二进制, 压缩, 图片, 日志等)
d # 目录文件
# 查看详细的文件类型
file /etc/services
"""软连接,硬链接"""
软链接新建了一个inode(相当于快捷方式),硬链接指向同一个inode
软:ln -s 链接到的路径 哪个文件/文件夹
硬:ln
# 取消软连接
rm -rf /sbin/nginx # 最后不能加/
"""vim"""
# 普通模式:
ctrl+b上翻页,ctrl+f下翻页
yy 复制一行
p 粘贴
dd 剪切
p 把上面剪切的粘贴上
# 编辑模式
i insert插入
a append追加
o 换行插入
esc回到普通模式
# 命令模式:
w 表示保存
q 退出
! 强制退出
:set nu 显示行号
:set nonu 不显示行号
/字符串 搜索这个字符串
:%s#ctrl#control#g # 替换文本(:%s###g)
# 查看上一次的命令是否有误,无误显示0
echo $?
# 清空文件内容
cat /dev/null > 文件名
用户
who # 当前有哪些用户登录了
whoami # 当前登录用户
w # 检查用户登陆情况
# id root
uid=0(root) gid=0(root) groups=0(root)
# 用户信息路径
cat /etc/passwd
# 密码存放路径
cat /etc/shadow
# 用户增删改
# 增(一个用户只能属于一个主组,可以属于多个附加组)
groupadd 组名 # 新增一个组
useradd -u 5001 -g 组名 -G 附组名1,附组名2 -c "可以写注释" -s /bin/bash lqz1
# 应用场景
创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户无法登陆系统
useradd mysql -M -s /sbin/nologin
# 改
usermod -c "注释" -md /用户目录 -s /bin/sh -l 用户名 新用户名 # -md,把环境也带过去
usermod -L 用户名 # 锁定后会无法登陆系统
usermod -U 用户名
passwd root # 修改密码
# 删
userdel 用户名 # 删除用户,不删家目录
userdel -r 用户名 # 删除用户,删家目录(慎用)
# 组的增删改
groupadd no_gid # 新增组
groupmod -g 1111 组名 # 改组id号
groupmod 组名 -n 新组名 # 改组名字
groupdel new_student # 删除组(组下如果有人,把人删除,再删)
# 用户UID,系统中约定的含义
0 超级管理员,最高权限,有着极强的破坏能力
1~200 系统用户,用来运行系统自带的进程,默认已创建
201~999 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统
1000+ 普通用户,正常可以登陆系统的用户,权限比较小,能执行的任务有限
# finger查询用户信息以及登录信息
yum install finger -y
finger 用户名
# 切换用户
su user # 不加载环境变量
su - user # 加载环境变量
权限
# 修改权限: d r-x r-x r-x
7=4(r)+2(w)+1(x)
r:read写权限
w: write写权限
x:可执行
chmod 777 文件夹/文件
# 特殊权限chattr
# 选项: + 增加权限 -减少权限 =等于某个权限
# a:让文件或目录仅可追加内容
# i:不得任意更动文件或目录
chattr +i 文件名
chattr -i 文件名
解压缩
# gzip(只能压一个文件,不能压文件夹,会把原来的删除)
gzip 文件名
gzip -d 解压文件名
# zip的压缩和解压
yum install zip unzip -y
zip filename.zip filename # 压单个文件
zip -r filename.zip /home/ # 把home文件夹压缩
unzip filename.zip # 解压
unzip -l filename.zip # 不解压,看内容
unzip filename.zip -d /home/ # 解压到home路径
# tar打包与压缩
tar czf 文件名.tar.gz 文件名
tar xf 文件名.tar.gz
tar xzvf xx.tar.gz # 解压tar.gz,详细过程列出来
tar czf etc.tar.gz --exclude=etc/services etc/ # 排除文件
tar xf /etc/local.tar.gz -C /home # -C指定解压到哪个路径
软件下载和安装
# rpm
rpm -ivh tree-1.6.0-10.el7.x86_64.rpm # 安装rpm的软件
rpm -q # 查看这个软件是否安装********
rpm -qa |grep tr # 列出所有安装的软件
rpm -ql # 查询指定软件包所安装的目录、文件列表rpm -ql unzip *****
rpm -qc unzip # 查看这个软件的配置文件位置
rpm -qf /etc/pam.d/vsftpd # 查看配置文件属于哪个软件
rpm -qlp trace-cmd-2.6.0-10.el7.x86_64.rpm # 查看该软件包安装后会释放哪些文件
rpm -ivh https://*.rpm # 远程地址下载
rpm -Uivh # 升级软件需要用 U
rpm -e zabbix-agent
# yum配置源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 阿里源
# 源码安装nginx(其他软件步骤类似)
安装编译依赖
yum install -y make pcre-devel gcc gcc-c++ zlib zlib-devel openssl openssl-devel
1.下载
https://nginx.org/en/download.html
2.解压
tar xf ...
3.cd进入nginx目录,通过configure 生成配置信息,配置相关的选项,并生成Makefile,软件安装的信息
./configure --prefix=/usr/local/nginx
4.make && make install # 按照Makefile生成的安装软件&&将二进制文件拷贝至对应的目录中
5.在任意路径敲nginx都能执行
建立软链接:ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
把/usr/loacl/nginx/sbin/路径加入环境变量
想使用systemctl管理(制作系统服务)
6.nginx命令介绍
nginx # 启动
nginx -s reload # 重新加载,修改配置文件
nginx -s restart # 重启
nginx -s stop # 停止
进程管理
1.ps aux 用它,[系统进程]
2.ps ef
3.ps aux|grep id,进程名字,
4.top # 实时看状态
5.kill -l # 列出当前系统所支持的信号
6.kill -9 进程id号 # 强行关闭
7.pkill -9 nginx # 关闭nginx所有进程
8.killall nginx # 关闭nginx所有进程
# screen管理后台进程
yum install screen -y
screen -S myjobs # 创建了一个窗口,执行耗时任务,进程
ctrl+a+d 退出当前bashshell但是耗时任务还在后台运行
screen -r myjobs 调到前台执行
screen -list 查看所有任务
系统服务
# 关闭防火墙
systemctl stop firewalld
# 关闭自启
systemctl disable firewalld
# 重新加载单元
systemctl daemon-reload
# 制作nginx服务
1.cd /usr/lib/systemd/system/
2.vim nginx.service
3.写入文件
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 修改文件权限
chmod 745 nginx.service
# 查看服务状态:
systemctl status nginx.service
# disabled表示没有开机自启动
Loaded: loaded (/usr/lib/systemd/system/nginx.service; `disabled`; vendor preset: disabled)
# 其他命令
# 启动nginx服务
systemctl start nginx.service
# 设置开机自启动
systemctl enable nginx.service
# 停止开机自启动
systemctl disable nginx.service
# 查看服务当前状态
systemctl status nginx.service
# 重新启动服务
systemctl restart nginx.service
# 查看所有已启动的服务
systemctl list-units --type=service
paramiko模块的使用
import paramiko
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='', port=22, username='root', password='')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls') # 传入要执行的命令
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
centos 7 安装git并配置ssh
# 1.安装git
yum install git
# 2.查看git版本
git version
# 3.配置帐户和密码
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
# 4.配置SSH用于拉取远程仓库
# 本地生成ssh key,生成公钥和私钥
ssh-keygen -t rsa -C "your_email@youremail.com"
# 一路回车,生成的密钥存放路径 /root/.ssh/
# 5.查看公钥
cat /root/.ssh/id_rsa.pub
# 6.配置github
https://github.com/settings/keys
# 新建密钥,名字随便起,刚才的公钥复制进去
# 7.done