好久都没有写博客了,看着最近发布的一篇文章,都是一个月以前了…之所以不想写,也是给自己找的借口吧,看那些大佬们都有自己的博客,然后去自己也去捣鼓了半天,还是没给弄明白(想自己写个博客的主题,奈何还是没弄好)
趁着周末,也就随笔写写吧。
我是想把近一个月的学习笔记及其各种方法上传的,奈何这些知识内容是真的多,一时半会还没办法给发出来(我总不能今天直接发个二三十篇文章笔记吧)。等我自己的博客搭建好了,我会把所有的知识点上传上去,毕竟经营一个自己的博客网站才是最好的!
今天就分享一下hexo和linux下的基操吧,基操勿6。。。
Linux操作系统
硬件:五大部件(运算器、控制器、存储器、输入设备、输出设备) —> 裸机
软件:系统软件和应用软件
操作系统:覆盖在硬件上的软件,用于提供人和计算机交互的接口(界面)
个人操作系统:Windows / macOS / Linux
服务器操作系统:商业化的Unix / Linux / Windows Server
Unix —> Minix —> Linux —> Android
Unix —> BSD —> FreeBSD —> macOS —> iOS
Unix —> Solaris / Hp-UX / AIX
-
Linus —> Linux内核(kernel) ----> Linux发行版本
- Redhat / CentOS / Ubuntu / Debian / SUSE
安全远程连接
—> SSH —> XShell / FinalShell / Termius
ssh root@IP地址(公网)—>>>输入密码
没有GUI(图形用户界面) —> Shell(壳程序 - 人机接口)
—> Bash(Bourne Again Shell)
命令格式:命令 [参数] [作用的对象]
调出帮助文档
- 在命令后面加上" --help"参数
- 使用man命令获取帮助手册 —> manual
man mkdir - 三方工具:tldr pwd
查看历史命令:history
清除历史命令:history -c
执行历史命令:!历史命令编号
文件操作相关的命令
pwd —> print working directory —> 显示当前工作目录
cd —> change directory —> 切换目录(绝对路径/相对路径)
ls —> list directory contents —> 列出文件夹下的内容
-l:长格式查看
-a:查看所有文件(包括以点开头的隐藏文件和文件夹)
-R:递归式查看
mkdir —> make directories —> 创建文件夹
-p:创建父文件夹(如果不存在)
rmdir —> remove directory —> 删除空文件夹
touch —> 创建空文件或者修改文件的最后访问时间
rm —> remove —> 删除文件
-f:(force)强制删除
-r:(recursive)递归式删除(可以用来删除文件夹)
cat —> concatenate —> 查看文件的内容
-n:显示行号
head / tail —> 查看文件的开头和结尾
-行数
more / less —> 逐页逐行查看文件内容
wc —> word count —> 统计行数、单词数、字节数
iconv —> 转换文件编码
~ Unicode —> 字符集(万国码)—> 其中一种实现方式叫utf-8
-f:原始编码
-t:目标编码
mv —> move —> 移动文件 —> 剪切
cp —> copy —> 拷贝文件
-r:(recursive)递归式拷贝(拷贝文件夹)
file —> 查看文件属性
压缩文件 / 解压文件
gzip / gunzip
xz -z / xz -d
WinRAR —> 归档/解归档
WinZip —> 压缩/解压缩
归档:把多个文件合并到一个文件中
解归档:把一个文件拆成多个文件
tar -cf html.tar *.html —> create
tar -xf html.tar —> extract
安全文件拷贝(通过网络跨主机拷贝文件)
sftp … …
scp root@一台服务器的IP地址:/路径/文件名 root@另一台服务器的IP地址:/路径/文件名
文件查找:
find 路径 参数 规则
find / -name ‘*.py’ 按文件名查找
find ./ -perm 0644 按权限查找
find ./ -size +1k -size -5k 按大小查找
find ./ -name ‘*.log’ -delete 查找后删除
常用快捷键:
Tab:自动补全命令或路径
Ctrl+u:删除整行
Ctrl+w:删除光标前面的一个单词
Ctrl+a:光标回到行首
Ctrl+e:光标去到行尾
重定向:
-
echo打印一个语句,然后输入到文档里面去(自动创建文档)
-
输出重定向:>
echo apple > fruits.txt (会覆盖) -
追加输入重定向:>>
echo apple >> fruits.txt
echo banana >> fruits.txt - 错误输出重定向:2>
- 输入重定向:<
- wall < 文档 将文档中的内容反向输出来
管道:
-
| 操作系统提供的进程间通信的I/O通道
- 前一个命令(进程)的输出作为下一个命令(进程)的输入
sort fruits.txt | uniq -c // 排序后去重
Web服务器:
-
Apache / Nginx
-
启动Nginx服务(Web服务) —> Web服务器
systemctl start nginx (CentOS 7.x)
service nginx start (CentOS 6.x) -
停止Nginx服务
systemctl stop nginx -
重启
systemctl restart nginx -
查看运行状态
systemctl status nginx -
设置/禁用开机自启
systemctl enable nginx
systemctl disable nginx
查看网络状态
netstat -ntlp
-n:地址和端口的数值
-t:tcp
-l:listen - 正在监听
-p:process - 显示进程信息
CentOS系统上如何安装软件和服务
-
-
使用包管理工具安装软件
-
yum --> Yellow dog Updater Modified
搜索:yum search nginx
安装:yum install -y nginx 遇见y/n就确认
卸载:yum erase -y nginx / yum remove -y nginx
更新:yum update nginx / yum update更新所有
查看信息:yum info nginx
查看安装的所有软件包:yum list installed | grep nginx - rpm
-
yum --> Yellow dog Updater Modified
-
源代码构建安装 —> configure / Makefile
例子1:源代码构建安装Git
~ 下载源代码:
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.27.0.tar.xz
~ 解压缩和解归档
xz -d git-2.27.0.tar.xz —> git-2.27.0.tar
tar -xf git-2.27.0.tar —> git-2.27.0(文件夹)-
以上2步可以缩减成1步,tar -zxf git-2.27.0.tar.xz 解压缩并解归档
-
安装前的准备工作
cd git-2.27.0
yum install -y libcurl libcurl-devel zlib zlib-devel 补包
yum install -y gcc 安装C语言编译器
./configure --prefix=/usr/local 安装前配置安装路径,安装软件一般都安装在这个目录 -
编译源代码生成可执行程序
make && make install -
通过下面的命令检查是否安装成功
git --version
whereis git
例子2:源代码构建安装Python 3
-
补充安装Python 3需要用到的依赖项
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libdb4-devel libpcap-devel xz-devel libffi-devel -
下载和检查Python3的源代码
wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tar.xz
md5sum Python-3.7.8.tar.xz 校验MD5码,看和官网是否一样 -
解压缩和解归档
xz -d Python-3.7.8.tar.xz
tar -xf Python-3.7.8.tar
或者
直接tar -zxf Python-3.7.8.tar.xz
-
安装前的准备工作
cd Python-3.7.8
./configure --prefix=/usr/local/python37 --enable-optimizations 安装前配置 -
构建和安装
make && make install - 配置PATH环境变量
vim ~/.bash_profile —> 当前用户环境变量
vim ~/.bashrc —> 全局用户环境变量,千万不要随便乱改vim /etc/bashrc —> 系统环境变量
-
安装前的准备工作
—> Go
export PATH=$PATH:/usr/local/python37/bin
—> Esc ZZ
~ 检查是否安装成功
退出登录,重新登录,激活PATH环境变量
python3 --version
pip3 --version
- 直接下载可执行二进制程序
MD5 —> 哈希函数/哈希算法 —> 给对象生成签名(指纹)
Vim编辑神器的使用
-
工作模式:
-
命令模式
移动光标:
~ G:最后一行
~ gg:第一行
~ 数字G:指定行
~ 左下上右:h j k l
~ 0:行首
~ $:行尾
~ w:下一个单词
~ 下一页/上一页:Ctrl+f / Ctrl+b
~ 下一行/上一行:Ctrl+e / Ctrl+y
编辑内容:
~gg=G :整理代码,自动缩进
~ 删除行:dd / 100dd
~ 删除到行首/行尾:d0 / d$
~ 删除一个单词:dw
~ 拷贝行:yy / 10yy
~ 粘贴:p
~ 撤销:u
~ 恢复:Ctrl+r
保存退出
~ ZZ
进入编辑模式:
i / I / a / A / o / O
宏操作:
录制 - q
qa —> i —> # —> Esc —> j0 —> q
@a / 100@a
进入末行模式:
: / ?
~ 编辑模式(插入模式)
回到命令模式:Esc
~ 末行模式(底线命令模式)
set nu / set nonu
set ts=4
set autoindent / set noautoindent
set expandtab
set ruler / set noruler
set hls / set nohls
w / q / wq / q! / qa
搜索 /keyword ?keyword
1,$s/keyword/content/cgie
c - confirm - 确认
g - global - 全局
i - ignore case - 忽略大小写
e - error - 忽略错误
修改权限: 1 执行 2 只写 4 只读
chmod u+x,g+x,o+x 文件名 —> 添加执行权限
chmod 755 文件名 —> 添加执行权限
把Python程序改成可执行脚本
在首行添加 #!/usr/local/python37/bin/python3
设置PATH环境变量,可以让code里面的程序直接运行,把以下行加入配置文件
export PATH=$PATH:/root/code
创建符号链接(软链接) —> 快捷方式 硬链接,改变其中一个另一个也改变
ln -s /usr/local/python37/bin/python3 /usr/bin/python3
#!/usr/bin/python3
映射快捷键:
inoremap _main if __name__ == ‘__main__’:
inoremap pr print(
map gg99999dd
别名和取消别名
alias ‘lla=ls -la’
alias ‘rmf=rm -f’
unalias lla
unalias rmf
vim多窗口操作
:sp —> 水平拆分窗口
:vs —> 垂直拆分窗口
:ls —> 查看所有文件
:b 编号 —> 切换文件
double Ctrl+w —> 切换光标到下一个窗口
:qa —> 退出所有窗口
用户管理:
~ 创建用户
useradd hellokitty
~ 修改密码
passwd hellokitty
~ 删除用户
userdel -r hellokitty
~ 设置密码过期
chage -M 30 hellokitty ---> 30天后密码过期
chage -d 0 hellokitty ---> 下次登录修改密码
~ 改变文件所有者
chown hellokitty filename
chown -R hellokitty dirname
~ 切换用户
su - switch user
~ 以超级管理员的身份执行命令
sudo - super user do
前提条件:当前用户必须在sudoers清单中
可以使用visudo编辑sudoers清单添加指定的用户
~ 其他命令:mesg write wall
MariaDB —> MySQL的开源免费分支
yum install -y mariadb mariadb-server
-
安装和使用MySQL:
-
删除和mariadb相关的包
yum list installed | grep mariadb | awk ‘{print $1}’ | xargs yum erase -y -
安装common包
rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm -
安装libs和libs-compat包
rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm -
安装devel包(给开发者使用的)
rpm -ivh mysql-community-devel-5.7.31-1.el7.x86_64.rpm -
安装client包(客户端工具)
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm -
安装server包(MySQL服务器程序)
yum install -y libaio numactl-libs
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm
MySQL的数据文件 /var/lib/mysql
MySQL的日志文件 /var/log/mysqld.log
安装软件:rpm -ivh
移除软件:rpm -e
查询软件:rpm -qa
启动MySQL
systemctl start mysqld
停止MySQL
systemctl stop mysqld
重启MySQL
systemctl restart mysqld
查看MySQL状态
systemctl status mysqld
连接MySQL数据库
mysql -u root -p
查看mysql临时密码
cat /var/log/mysqld.log | grep ‘temporary password’
修改数据库密码
sql> alter user ‘账户名’@‘数据库名’ identified by ‘密码’;
如果暂时需要使用弱口令密码,可以做下面的设置PATH环境变量
sql> set global validate_password_policy=0;
sql> set global validate_password_length=6;
netstat -ntlp —> mysqld 3306
版本控制Git的使用:
1990s —> CVS / VSS —> 锁定模式
2000 —> Subversion —> SVN —> 合并模式
中央集权型的版本控制系统(必须有版本控制器服务器才能使用版本控制)
BitKeeper
2005 —> Git —> 分布式版本控制系统
-
创建本地仓库
git init(在某一个项目文件里,比如code) -
把工作区的文件放到暂存区
git add filename
git add . (把所有文件放入暂存区) -
把缓存区的文件提交到本地仓库
第一次提交代码需要设置用户名和邮箱
git config --global user.name “账户名”
git config --global user.email “邮箱地址”git commit -m ‘这里写上本次提交的注释’
-
查看提交日志(历史),用于恢复
git log 弱查看
git reflog 强查看,可以回到过去和未来的版本 -
用暂存区的内容恢复工作区
git restore filename -
版本回退
git reset --hard ID -
添加远端仓库
git remote add origin URL
git remote remove origin 移除远端仓库
git remote -v -
-
同步代码
-
上推(把自己的工作成功同步到服务器)
git push -u origin master
git push -
下拉
git pull
-
上推(把自己的工作成功同步到服务器)
-
解决代码冲突 —> reject / CONFLICT
git pull //先拉下来
git diff //查看两文件区别
vim 冲突的文件
git add . //全部加入缓冲区
git commit -m ‘解决了冲突’
git push -u origin master //重新推上去 -
配置免密访问
ssh-keygen -t rsa -b 2048 -C “邮箱地址”
—> ~/.ssh/ —> id_rsa / id_rsa.pubcat id_rsa.pub —> 把公钥部署到码云或者Github上
git remote remove origin 先移除原来没免密的
git remote add origin SSH地址
git remote -vgit push -u origin master // origin master是本地的
-
克隆代码
git clone 仓库地址
git clone --depth=1 仓库地址 文件夹名字 -
-
分支操作
-
查看分支:
git branch
git branch -a -
创建分支:
git branch 分支名 -
切换分支:
旧:git checkout 分支名
新:git switch 分支名 -
创建并切换分支:
旧:git checkout -b 分支名
新:git switch -C 分支名 -
合并分支(把指定分支的工作成果合并到当前所在的分支)
git merge 分支名 -
删除分支:
git branch -d 分支名
git branch -D 分支名
git push -u origin new-cool-function hello 建立分支联系
-
查看分支:
-
防火墙软件
- iptables
- firewalld —> CentOS
定时任务:
Linux系统下的每个文件有三个时间属性:
- atime - 最后访问时间
- mtime - 最后修改时间
- ctime - 创建时间
总结:
-
Linux —> 用它做服务器
Web服务器、数据库服务器、缓存服务器、消息队列服务器、分布式存储服务器、…… -
云服务器 —> 性价比高、伸缩性强、配置简单(控制台)
-
SSH 22/tcp —> FinalShell / Termius / Putty / XShell / MobaTerm
-
Shell —> command —> Bash
-
-
命令:
-
文件/文件夹操作
pwd / cd / ls / mkdir / rmdir / touch / rm / cp / mv
wc / file / cat / tac / rev / more / less / head / tail
iconv / gzip / gunzip / xz / tar / uniq / sort / cut -
用户/用户组/权限操作
useradd / userdel / passwd / chage / chmod / chown / chgrp
su / sudo / visudo / logout / exit / w / who / whoami
last / lastb -
网络操作
wget / scp / sftp / ping / ifconfig / ip / netstat -
进程管理
kill / killall / pkill / top / ps
& / jobs / fg / bg
在程序执行代码后面加&,代表该代码在后台运行
-
redis-server >> redis.log &
Ctrl+c —> 结束进程
Ctrl+z —> 暂停进程,置于后台
~ 系统管理 —> CPU、内存、IO设备
cat /proc/cpuinfo
cat /proc/meminfo
sar / free / iostat / df
-
-
安装软件和服务
-
包管理工具
- yum
yum search
yum install
yum erase / yum remove
yum update
yum info
yum list installed - rpm
rpm -ivh
rpm -e
rpm -qa
- yum
-
源代码构建安装
- yum安装依赖项
- wget下载源代码
-
包管理工具
两种压缩文件方式及一种归档文件的操作命令
- gzip 压缩
- gunzip 解压缩
- xz 文件名 ==> 压缩文件
- xz -d / 解压缩
- tar -cf 归档文件名.tar 要归档的文件1 文件2 文件3...
- tar -xf 归档文件.tar ==> 解归档同时保留原归档文件
./configure
make && make install
配置PATH环境变量
- 命令的组合执行
a; b; c
a || b || c
a && b && c -
-
vim的使用
- 命令模式
- 编辑模式
- 末行模式
- Shell编程
使用Hexo生成博客
-
-
安装node.js和git
- node --version
- npm --version
- sudo npm install -g npm
-
-
安装hexo-cli工具
- npm config set registry http://registry.npm.taobao.org/ 更改淘宝镜像源
- npm install -g hexo-cli
-
-
使用hexo创建博客项目
- hexo init 文件夹
- cd 文件夹
- npm install —> 安装博客项目所需的依赖项
-
把写好的markdown文件放置到source/_posts目录,
-
~ hexo g —> 把Markdown变成HTML页面
-
-
运行博客项目
- hexo s —> localhost:4000
-
-
部署到GitHub的Pages服务
- 在GitHub上创建一个名为"用户名.github.io"的仓库
-
修改博客项目的_config.yml —> deploy
deploy:
type: git
repo:https://github仓库的地址
branch: master
-
安装部署到github的插件
npm install hexo-deployer-git --save -
完成部署(把生成的HTML页面push到仓库中)
hexo g -d
hexo d -g - 打开浏览器,访问https://git账户名.github.io