Linux操作系统
linux基础指令
命令 | 解释 | 命令 | 解释 |
---|---|---|---|
ps (-ef/aux) | 查看进程 | history | 查看历史命令 |
whatis | 一句解释 | !2 | 把编号为2的历史命令再来一次 |
man | 查看解释 | uname/hostnam | |
clear | 清屏 | who/who am i/w | 查看登陆用户 |
adduser xx | 创建xx用户 | passwd xx | 重置用户xx的密码 |
groupadd | su (switch user) | 切换用户 | |
reboot/init6 | 重启 | sudo | 以管理员身份运行 |
shutdown/init0 | 关机 | su root | 切换到超级管理员账户 |
init5 | 启动图形界面 | su python | 切换到python普通管理员 |
init3 | 启动多用户多任务带网络功能 | pwd(print work directory) | 打印当前工作目录 |
cd(change) | 切换工作目录 | touch hello.txt | 建空文件hello.txt(如果文件存在,就更新文件最后访问时间,不修改内容) |
ls | 查看工作目录下面所有文件 | sudo touch hello.txt | 以管理员身份执行touch命令 |
ls -a | 查看所有文件(包括隐藏)(all) | rm hello.txt | 删除hello.txt |
ls -R | 递归地一层层展开 | rm -f hello.txt | 强制删除hello.txt (不会提示) |
ls -l | 利用长格式查看(long)— ll 也可以 | cat xx | 查看xx里面内容 |
d r w x | d(文件夹)r(可读)w(可写)x(可执行(execute)) | man xx | 查看手册(manuals) |
ls -a -l/ls -la | 即是长格式,又显示隐藏文件 | info | 查看信息(information) |
cd ~ | 切换到用户主目录 | ls –help | 获得帮助 |
cd / | 切换到根目录 | ls –help | less | 一页一页看 |
mkdir abc | 新建文件夹 | ls –help|more | 一页一页看 |
rmdir abc | 删除空文件夹 | cp | 复制- copy |
rm -rf abc | 递归地删除文件夹abc内容(谨慎使用) | cp hello.txt abc/shit.txt | 复制到abc并改名字为shit.txt |
echo | 回声 | cp hello.txt abc/ | 复制到abc |
echo hello world>hello.txt | 在hello.txt中输入hello world | mv shit.txt good.txt | 改名字为good.txt |
mv | 剪切 | mv shit.txt abc/ | 剪切到abc |
head 5 hello.txt | 只看前五行 | tail 10 hello.txt | 只看最后10行 |
sort | 排序 | grep | 查找/搜索 (文件内查找) |
find | 查找/搜索 (查找文件) | find . -name “*.txt” -print | 显示当前目录下所有txt文件 |
find . ! -name “*.txt” -print | 显示当前目录下所有非txt文件 | cat index.html | grep body | 在index.html中查找body |
uniq | 去重(unique) | diff | 比较两个文件 |
diff index.html qq.html | 比较index.html和qq.html不同点 | ||
wc | world-count 统计 | wc -l | 统计行数 |
wc -w | 统计单词数量 | wc -c | 统计字符数 |
file | 查看文件相关信 | wget +网址 | 从网址获取文件 |
gzip | 压缩 | gunzip | 解压缩 |
tar | 归档 | tar -xvf ok.tar | 解归档ok.tar |
tar -cvf ok.tar abc/* | 把abc文件夹及下面所有文件归档 | tar -cvf ok.tar .txt .html | 归档所有txt,html后缀的文件到ok.tar |
which xxx | 找到xxx的安装位置 | whereis xxx | 找包含xxx的所有路径 |
date | 看时间 | cal | 看日历 |
cal 2018 | 看全年日历 | ls -l > log.txt | 重定向 |
script | 录制脚本 默认储存在typescript中 | script hehe.txt | 录制脚本并存在hehe.txt中 |
write python | 给用户名为python的发消息 ctrl+c退出 | wall ‘十分钟后关机’ | 给所有用户发送’十分钟后关机’ |
mesg n | 表示不接受任何write消息 | mesg y | 表示接收write消息 |
top | 任务管理器 | kill PID | 杀死进程PID |
kill -9 PID | 强杀进程PID | chown | 更改文件所有者 |
chmod | 修改权限 | 1代表有此权限 | 0代表没有此权限 |
111/7 rwx | 101/5 r-x | 011/3 -wx | 110/6 rw- |
chmod u+x hello.py | 给当前用户绑定hello.py执行权限 | chmod u-x hello.py | 给当前用户取消hello.py执行权限 |
chmod u+x/g+x/o+x hello.py | 给user group other 绑定执行权限 | chomd 755 hello.py | 给所有用户添加执行权限 |
chmod +x hello.py | 给所有用户绑定执行权限 |
创建符号连接
symlink 符号链接
ln 创建符号命令
ln hello.py xixi 为hello.py创建一个名为xixi的符号链接(相当于增加一个引用)(硬链接)
ln -s hello.py xixi 为hello.py创建一个名为xixi的快捷方式(软连接)-文件最前面会加上l
ln -s /etc/nginx/nginx.conf nginxconfig 为/etc/nginx/nginx.conf 创建一个软连接 nginxconfig
Linux安装软件
阿里云镜像安装yum
进入/etc/yum.repos.d
1. wget + 地址
2. yum clean all
3. yum makecache
http://mirrors.aliyun.com/repo/ 镜像源地址
http://mirrors.aliyun.com/repo/Centos-7.repo (Centos-7.repo 镜像源地址)
http://mirrors.aliyun.com/repo/epel-7.repo (epel-7.repo 镜像源地址)
安装nginx软件
1.包管理工具 - yum(黄狗更新器) - rpm(红帽下的包管理工具)
2.安装程序 - *.bin
3.压缩文件 - 解压缩 + 配置环境变量
4.源代码 - 构建安装(c语言构建工具)
yum search nginx 搜索nginx
yum install nginx.x86_64 安装nginx.x86_64
yum remove nginx 卸载nginx
yum list installed 查看所有已安装应用
yum list installed | grep nginx 加管道查找nginx
nginx -s reload 重启服务器
rpm -iv xxx.rpm 利用rpm安装(需要提前下载文件)-i -v
rpm -ivh --force(强行安装) -nodeps(不安装依赖包)
rpm -e 卸载
rpm -qa|grep 用管道列出安装程序
源代码安装redis:
cd redis-3.2.11先去这个目录
make && make install先要下载 源代码构建安装
方法1:redis-server myredis.conf &——表示启动服务器加了&表示去后台运行
方法2:redis-server myredis.conf > hello.log &——把所有输出放到文件里这样会显示进程号
fg %1 —— 把刚才放到的后台放到前台
源代码安装python3.6.5:
xz -d Python-3.6.5.tar.xz (-d 表示解压)
./configure --prefix=/usr/local/python3.6 --enable-optimizations 构建一个c语言的makefile
make && make install 构建完成后构建安装
如果构建失败就说明差底层依赖库;执行下面语句
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
安装后配置环境变量--也就是创建一个软连接就可以了
ln -s /usr/local/python3.6/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3.6/bin/pip3.6 /usr/bin/pip3
ln -s /usr/local/python3.6/bin/2to3-3.6 /usr/bin/2to3
ln -s /usr/local/python3.6/bin/pyvenv-3.6 /usr/bin/venv3
解压缩+配置环境变量
cd ~
vim .bash_profile
用户登陆自动运行一次
PATH=$PATH:$HOME/bin --> PATH=$PATH:$HOME/bin:/root
echo $PATH 回声查看$PATH值,查看更改生效没(没)
要生效就重新链接服务器,或者执行下面代码:
source .bash_profile 重新执行.bash_profile,让更改生效
vim .bashrc
用户登陆自动运行一次
例如:在里面末尾加入下面语句:
alias la='ls -la' (定义别名)
echo 'hello cfx' (回声语句)
cd /etc/rc.local (链接)(or)
cd /etc/rc.d/rc.loca (实际地方)
开机自动运行
在末尾加入你的程序则开机启动:
例如:再末尾加入:
nginx
mariadb
安装MySQL
yum install mariadb-server mariadb 安装mysql服务和客户端
systemctl start mariadb 启动服务器
mysql -u -root -p 用root登陆服务器-p表示密码
systemctl enable mariadb 开机自启mariadb
systemctl disable mariadb 关闭开机自启mariadb
systemctl stop mariadb.service 停止masql服务器
mysql -h 10.7.89.55 -u python -p 用python用户名登陆 10.7.189.55上的MySQL
关系型数据库
关系代数+集合论
用二维表组织数据
SQL - 结构化查询语言
show databases; 必须要分号
use mysql 进入MySQL
show tables 显示数据库里面所有表格
select * from user; 显示user里面所有内容
select user, host, password from user; 显示user里面user, host, password
update user set host='%' where host='python' and user='root'; -- %表示任何ip可以连接(用于远程连接)
netstat -na | grep 3306 查看3306端口状态
启动Windows系统上的mysql:net start mysql57
防火墙
防火墙
firewalld
firewall-cmd --state 查看状态
systemctl/service/chkconfig 系统控制
systemctl stop firewalld 停止防火墙
systemctl start firewalld 开启防火墙
systemcrl status firewalld 查看防火墙状态
systemcrl restart firewalld 重启防火墙
开启一个80端口 permanent表示永久开启
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
网络命令
ifconfig/ip
eth 以太网
lo 本地local host
ip address 查看地址
ping 测试检查网络 ctrl + c 结束
发送的ipm数据,默认64bytes大小
ping www.baidu.com
ping -s 500 -c 3 www.baidu.com 更改数据包大小为500b进行3次测试
ping会占用服务器带宽和资源。可以利用ping攻击服务器 (ping to death) DDoS = Distributed Deny of Service
TCP flood (比ping包还要恶心,因为TCP传输前后需要服务器响应)
防D(阻止ping包)
反向代理-可以选择服务器为你传输数据-具有一个ip地址,这样你的访问就不是直接和服务器链接,是先和反响代理链接
ttl time-to-live 存活时间
netstat 查看网络状态(端口及服务类型等网络状态)
netstat -na (n-表示容易看懂 a-表示所有)
netstat -nap (加以个p会多一个进程编号和程序名字)
netstat -nap > result.txt 重定向
netstat -nap 2> error.txt 错误重定向 (出错的才会记录到error.txt)
netstat -nap > result.txt 2>error.txt 粘着写
路由器
nat 网络地址转换
端口映射
网络窃听:wireshark + 网卡混杂模式
把DNS与IP相互转换--host nslookup
文件传输
ssh
ssh+用户名@IP 链接别人的服务器 需要知道密码 quit退出
scp 网络拷贝
sftp 上传(put)/下载(get)文件
sftp root@localhost
awk/计划任务/xargs/
awk (pattern scanning and processing language) 模式匹配处理语言
awk '{print $2}' 取进程号
ps -aux |grep mysql |awk '{print $2}' |xargs kill -9 2> error.log
克隆表达式 -- 计划任务 (网上搜cron表达式在线生成)
后台crond程序会执行这个任务
crontab -e 编辑
crontab -l 列出
语法:
* * * * * (分,时,日,月,星期)
eg:
5 * * * * data >> /root/log.txt
vim
python 命令行参数 sys.argv[i](i为位置)
#!/usr/bin/python 设置默认程序
#--coding:utf-8-- 设置默认编码
vim hello.py
i 编辑模式
Esc 退出编辑模式
: 末行模式
set nu 显示行号
set nonu 关闭行号
set syntax on 高亮语法
set ts=4 制表键设置为4个空格
保存到.vimrc中则每次都默认开启
dd 删除一行
u 恢复删除
yy 拷贝
p 粘贴
5dd 删5行
w 保存
q 退出
q! 强退
!v 进入最后退出文件
G 最后一行
gg 回到首行
100G 去到100行
ctrl y/e 上下滚动一行
ctrl f/b 上下滚动一页
h j k l 上下左右(命令模式下)
命令模式下输入/ + xxx 查找xxx
g 全局模式
i 忽略大小写
c 确认模式
e 不报错
/function n(next) 查找 n是下一个 N 是上一个
/正则表达式 --格式:/\d\{3} --注意反斜杠的使用
:1,$s/function/func/g 替换function为func 1,$ 表示从第一行到末尾 s 表示替换 g 表示全局模式
:1,$s/正则表达式/替换文本/-gice
录制宏:
qa ---- q + a/b/c/d (q为录制宏 abcd为四个寄存器)
操作 (对文档进行操作)
q (结束录制)
100@a (@a表示播放宏,100表示执行100次)
自定义缩写
:abbrev/abbr ma if __name__ == '__main__':
在编辑模式下 输入ma+空格/制表键 会自动输出if __name__ == '__main__':
退出后再进来将失效 否则应该保存再配置文件中
自定义快捷键
:map 快捷键 功能