转眼间培训已经过去了七周,第二阶段的学习即将结束,本周的内容比较繁杂,主要涉及Linux, VIM, Nginx, MySQL, Shell五个方面的学习与实际应用,具体如下所示:
1、Linux操作系统(Unix(commercial) - 商业软件,与固定硬件绑定/ Linux(free) - 比window更稳定可靠 ):
Linux是一个通用操作系统。一个操作系统要负责任务调度、内存分配,外围设备IO操作,其通常由内核和系统程序(设备驱动、底层库,shell,服务程序等)两部分构成,其内核是芬兰人Linux Torval开发的。
- 文件、文件夹命名字符:字母、数字、下划线、.(放首位为隐藏文件)
- 常用命令
ps(process state):进程状态
clear:清屏
adduser:添加用户
passwd:配置密码
groudadd:把用户加入某个组
groupdel:把用户从某个组中删除
who am i/who/w:查看自己
uname:系统名称
hostname:主机名称
su(switch user) root:切换到超级管理员
history:显示历史命令 !2:把第二个命令再执行一遍
pwd(print working directory):查看当前位置
cd(change directory):切换目录
../.:上一级目录/当前目录
ls(list directory contents):查看当前路径下的文件和文件夹
ls -a(all):查看包括隐藏文件在内的文件和文件夹
ls -l(long:长格式)/ll(ls -l的别名):查看当前路径下的文件和文件夹的详细信息
rwx:read/write/execute
ls -la:既是长格式,又显示隐藏文件
ls -R:以递归的方式列出子目录
touch:创建空文件(以.开头的文件和文件夹都是隐藏的,用ls -a才能看到),如果文件存在,则修改创建时间至当前时间
mkdir:创建空文件夹
sudo(superuser do):以管理员的身份执行命令,要先修改/etc/sudoers文件
cd ~:回到用户主目录
rm(remove):删除文件
-f:强行删除(慎重使用)
-rf: r --> recursive 递归删除,用于删除有文件的文件夹(更慎重使用)
rmdir:删除文件夹
cat(concatenate):查看文件内容
head 5 文件:查看文件的前五行
tail 10 文件:查看文件的最后十行
man(manual) 命令:查看指定命令的参考手册 查看之后退出按q
info(information) 命令:比man显示的信息更详细
命令 --help | less/more: 查看帮助信息,一页一页看,空格为下一页 b为上一页 退出为q
echo:回声,写什么发给你什么,可以查看系统环境变量
:重定向操作 echo hello,world > hello.txt(把hello,world写入hello.txt中)
2>:错误重定向,没有错误文件中就没有内容
cp(copy):拷贝文件(复制)
-v(verbose):显示拷贝的详细过程
scp:安全拷贝,实现网络拷贝
scp localpath(本地文件地址) 对方用户名@地址:对方服务器保存文件的地址
sftp:跨网络传文件 get:下载文件 put上传文件
sftp 对方用户名@地址
host:域名服务
host www.baidu.com:将域名转换为ip地址
host 10.9.110.3:将ip地址转换为域名
mv(move):移动文件(剪切)/给文件改名字
diff(different):比较两个文件的差别
wc(word count):计算文件的行数、单词数、字符数
-w:只数单词数
-l:只数行数
-c:只数字符数
file:查看文件的相关信息
wget:下载文件
grep:查找文件指定信息(文件内容)
grep "function" index.html -n (-n:显示行号)
grep "function" .html . -n -R:从当前目录及其子目录中递归地查找所有html文件的function关键字的位置,并显示行号
find:查找文件
uniq(unique):去重
sort:排序
gzip(.gz)/gunzip:压缩/解压缩 g:GNU规范(自由的软件)
xz 文件名:压缩文件,结果为.xz结尾的文件
xz -d xxx.xz:解压缩.xz .lzma结尾的压缩文件
tar(together archive):归档/解归档
-c:归档(通常合用参数形式: -cvf 归档)
-x:抽取(通常合用参数形式: -xvf 解归档)
-v:显示归档的过程
-f:指定文件
tar -cvf hello.tar abc/ 归档文件夹
whatis python:查看命令的说明
init 0/shutdown:关闭服务器
init 6/reboot:重启服务器
init 5:从字符界面到图形界面
which 命令:查看命令(如python)的位置
whereis: 路径名中包含指定命令(如python)的,全都显示出来
usr/:默认安装软件的路径 相当于windows的Program Files
date:查看时间
cal(calendar):查看日历
cal 年份:查看指定年份全年的日历
script 文件名:录制所有行为 exit可退出,生成typescript(默认文件名)文件,
里面有录制期间的所有行为
write 用户名:给指定linux用户发送信息
wall(warning all) 内容:广播
mesg n/y:可以/不可以接收到其他linux用户用write发送的消息
/:系统的根目录,相当于windows中的我的电脑
/proc cpuinfo:包含cpu信息
/proc meminfo:包含内存信息
cd ../jackfrued 相对路径
cd /home/jackfrued 绝对路径
wget http://www.baidu.com -O foo.html: -O --> 文件重命名
top:任务管理器,查看cpu mem占用率等系统信息
kill 进程号:杀死进程
-9:强杀
ZZ/:wq/:x :保存退出
chmod u+x 文件名:修改权限(当前用户添加执行权限)
chmod g+x 文件名:修改权限(同组用户添加执行权限)
chmod o+x 文件名:修改权限(其他用户添加执行权限)
chmod 755 文件名:r --> 4 w --> 2 x --> 1
!/usr/bin/python:明确指定python解释器的位置
chown 新的所有者 文件名:改变文件的所有者
df:查看磁盘空间
fdisk -l:磁盘分区表操作
mkfs:格式化文件系统
fsck:文件系统检查
mount/umount:挂载/卸载
:重定向 替换
:重定向 追加
- 高端命令:
awk:一种处理文本文件的语言,是一个强大的文本分析工具
xargs:将一堆值作为另外一个命令的参数
ps -aux | grep mysql | awk '{print $2}' | xargs kill -9:将查询的进程号作为参数传给管道用以杀死进程
ps -aux | grep mysql : 搜索SQL进程
awk '{print $2}':打印第二个参数
xargs kill -9:用前部分的输出结果(进程号)作为参数,强杀进程
crontab -e:定时自启 --> * * * * * (分钟 小时 日 月 星期几)
25-30 7,18 3 3 mon-fri date >> ~/log.txt : 3月3日(周一-周五 7时,18时的 25-30分钟打印时间)
crontab -l:查看计划任务列表(当前用户的计划任务)
crontab -r:删除计划任务
2、VIM编辑器
- 主要内容
- 启动和退出
- 命令模式和编辑模式(常用命令如下)
:set nu:在vim中添加行号
:set nonu:
:syntax on:开启高亮语法
:set ts=4:制表键设为4个空格(默认为8个空格)
dd:删除整行
dw:删除单词
u:撤销
yy:拷贝一整行
p:粘贴
q!:不保存强退
G:回到最后一行
gg:回到首行
1000G:去1000行
ctrl+y: 往上翻一行
ctrl+e: 往下翻一行
ctrl+f: 往前翻一页
ctrl+b: 往回翻一页 - 光标操作(h j k l:上下左右)
- 文本操作
- 查找操作 (/需要查找的内容 按n:next 按N:before 正则表达式:/\d+(+ {4,}等量词前需要加\转义))
- 替换操作 (:1,$s/function/func/gi 【1,$:指定范围,1-最后一行】 【s:替换】 【function:被替换内容】 【func:替换内容】 【g:全局替换】 【i:忽略大小写】【c:每次替换前询问】【e:忽略错误信息】)
- 参数设定
.vimrc
set ts = 4
set nu - 高级技巧
录制宏:方便重复操作
1> qa:开始录制(qa,qb,qc,qd)
2> 执行你的操作,这些操作都会被录制下来
3> q:结束录制
4> @a:播放录制 100@a:播放录制100遍
:abbr main if name == 'main': --> 定义一个缩写
:map ^X(快捷键) 100dd(命令) --> 定义快捷键(ctrl+x 删除100行)
ln -s /root/mycal /usr/bin/mycal : 注册环境变量/符号链接
rm /usr/bin/mycal :删除环境变量/符号链接
vim .bash_profile :进入/root目录下的隐藏文件.bash_profile中(登录自启)
PATH=$PATH:$HOME/bin:/root :将root加入环境变量PATH中,以后/root下的可执行程序在任意地方都可以直接执行
echo $PATH : 查看PATH中的内容(包含的路径)
source .bash_profile: 将.bash_profile文件重新执行一次
vim .bashrc:可修改别名(登录自启)
vim /etc/rc.local:(开机自启)
3、NginX( HTTP server -->处理浏览器发来的http请求 / wsgi(配置网关))
阿里云下的操作:
开启80端口(http)及443端口(https)
0.0.0.0/0:设置访问权限 --> 全世界都可以访问
nginx:启功nginx服务器
nginx -s reload:重启nginx服务器
nginx -s stop:关闭nginx服务器
/usr/share/nginx/html:把写好的文件放到此处就可以在网站中呈现本地虚拟机下的操作:
修改yum的源,在/etc/yum.repos.d中添加Centos-7.repo epel-7.repo
在yum.repos.d文件夹下执行如下命令:
yum clean all
yum makecache
yum search nginx
yum install nginx.x86_64
配置服务
systemctl stop firewalld:停止防火墙(旧版本为service)
systemctl start 服务名:开启指定服务
systemctl restart 服务名:重启服务
systemctl status 服务名:查看指定服务状态
systemctl enable mariadb:数据库开机自动启动(创建了符号链接)
systemctl disable mariadb:取消数据库开机自动启动(移除了符号链接)
systemctl restart mariadb:重启数据库服务器
firewall-cmd --state:查看防火墙状态
firewall-cmd --reload:刷新防火墙,让新的设置生效
firewall-cmd --zone=public --add-port=80/tcp --permanent:给防火墙开洞,打开80端口(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone= public --remove-port=80/tcp --permanent:给防火墙补洞,关闭80端口
netstat -na | grep 3306:查看指定端口的状态
yum list installed:查看所有的已安装项
yum remove nginx:移除指定安装项
yum update:更新yum
ps -aux | grep nginx:查看指定进程,管道起过滤作用
4、关系型数据库
1) 关系代数 + 集合论
2) 用二维表组织数据
3) SQL - 结构化查询语言
MySQL - RDB/Persistence/SQL 数据持久化 保证数据的安全性 避免冗余 保证数据的正确有效 查询快捷高效
mysql == mariadb
mariadb-server.x86_64 --> 服务器工具
mariadb.x86_64 --> 客户端工具
yum install mariadb-server mariadb:安装mariadb客户端和服务器
或:rpm -iv 文件名:用包管理工具来安装
或:make && make install:源代码构建安装
或:用绿色软件(要配置环境变量 ./configure)
yum remove mariadb-server:删除mariadb服务器
systemctl start mariadb:启动数据库服务器
mysql -u root -p:启动本地数据库(mariadb mysql)客户端,无密码情况下
mysql -h 120.88.222.123 -u jackfrued -p:连接到其他人的服务器
windows下启动/关闭本地数据库服务:
net start mysql57
net stop mysql57
SQL
-- SQL: Structured Query Language
-- DDL(Data Definition Language) create/drop/alter
-- DML(Data Manipulation Language) insert/delete/update
-- DQL(Data Query Language) select
-- DCL(Data Control Language) grant/revoke
SQL中的注释:-- + 空格
show databases; : 呈现现存的服务器
create database company default charset utf8; :创建company数据库并指定编码为utf-8
use mysql;:操作mysql数据库
show tables;:查看数据库中所有的表格
select user,host,password from user;:查看user表中的user,host,password列
update user set host='%' where host='izwz97qryagom9q93hezjrz' and user='root';:修改user表中host列的数据
quit:退出客户端
硬链接 ln filename linkname 引用计数+1,相当于在不使用空间的情况下备份了文件,与拷贝不同,一改全改
软连接: 又称符号链接, ln -s filename linkname 引用计数不变,相当于windows下的快捷方式,文件删了快捷方式失效
平常删除数据,只是删除引用,而非真实数据,除非有其他覆盖原数据内存
find/xargs
find(事例如下):
将目前目录及其子目录下所有延伸档名是 c 的文件列出来:
find . -name "*.c";
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l { } /;
xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。
它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。
xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
多行输入单行输出
cat xargs.txt |xargs
-n选项多行输出
cat xargs.txt | xargs -n5 (-n5:多行输出,每行输出5项)
wget:通过网络资源获取
ifconfig(network interfaces configuring 显示或配置网络设备(网络接口卡)的命令) == ip
ping:检查网络可达性,收到数据表示服务器可达
ping -s 500 -c 3 www.baidu.com: 向baidu发送3次ping包 每个ping包500bytes
icmp: Internet Control Message Protocol(Internet控制报文协议)
icmp_seq = 1:第一个icmp报文
ttl: 最大存活时间
time: 数据的往返时间
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
NAT:网络地址转换,路由器的功能
端口映射:分为静态和动态两种映射,为外网访问内网中特定主机服务
|:管道、过滤
网络窃听,重放攻击
ssh 用户名@地址:链接其他服务器
exit/logout:断开连接
top:cpu mem的利用率
ps:进程的状态
netstat:查看进程的端口情况
Redis - NoSQL(= not Only SQL) - High Speed Cache
redis-server myredis.conf &:按照指定配置文件启动redis服务器(&:后台运行)
redis-server myredis.conf > redis.log &:输出重定向到redis.log中
fg %1:将后台运行的程序放到前台执行
Linux下安装软件的方法
1) 包管理工具 - yum( Yellowdog Updater Modified CentOS下) rpm(CentOS下 RedHat下)
2) 安装程序 - *.bin
3) 压缩文件 - 解压缩 + 配置环境变量
4) 源代码 - 构建安装(C语言构建工具)
python2.x 升级到 python3.x
1) yum/rpm
2) 解压缩+配置环境变量
3) 源代码构建安装
5、shell和shell编程
从下周开始将进行结构化查询语言SQL与Django的学习,感觉一个完整的大项目已经写进了日程。不过噩耗在于自己仿佛不能拿培训的项目作为毕设了,主要源于难度和工作量不够,真是人算不如天算,欲想被救必先自救,不过爬虫和机器学习部分的学习依旧是重中之重,接下来的每一天哪怕不为毕设为工作也需全力以赴~