LInux 入门.md
7.Linux 文件:Linux 一切皆文件。
1.ls- #ls :查看当前工作目录下的所有文件/文件夹
- #ls 路径名,查看指定目录下文件/文件夹,#ls ../../root
- #ls -lha [路径],-l 表示以详细列表显示,-a显示隐藏文件,-h以可读性更高的方式显示
2.pwd , #pwd ,打印当前工作路径
3.cd , #cd 路径,切换当前工作目录,cd ~ 切换到家目录
4.mkdir
- #mkdir 路径,创建目录,这个目录可以是文件夹名称
- #mkdir -p 路径,一次性创建多层文件夹
- #mkdir 路径1 路径2...
5.touch
- #touch 路径,路径可以是文件名
- #touch 路径1 路径2,创建多个文件
6.cp
- #cp 被复制的文档路径 被复制到的路径,cp a.txt /home/c/a.txt
- cp a.txt /home/c/a1.txt ,复制过程中并重命名
- #cp -r 被复制路径 目的地,-r表示递归复制
7.mv
- #mv 需要移动的文档路径 需保存的路径,移动后原始文件不在原来位置
- 重命名可以用移动使用
8.rm
- #rm 选项 需要移除的文档路径
- -f :强制删除,不会有提示
- -r :递归删除
- #rm -rf 文档路径1 文档路径2...,批量删除多个
- #rm -rf linux*,删除以linux开头的文档,*表示通配符
9.vim
- #vim 文件路径,文本编辑
10.输出重定向,#正常执行的指令 {>|>>} 文件路径,文件不存在就创建
-
:覆盖输出,会覆盖原先的文件内容
-
:追加输出,不会覆盖原始文件内容,在原始内容末尾添加
11.cat
- #cat 文件的路径,直接打开文件,类似vim
- #cat 文件路径1 文件路径2... > 文件路径,合并文件名到文件路径
12.clear | ctrl +L,#clear | Ctrl + L,清屏
2.id,查看一个用户的一些基本信息- #id ,uid用户id,gid组id,组表示附加组
- #id 用户名,显示指定用户的基本信息
- 验证用户信息通过文件 /etc/passwd ,验证用户组信息 /etc/group
3.whoami ,显示当前登录的用户名
- #whoami ,一般用于 shell 脚本,获取当前操作的用户名方便记录日志
4.ps ,查看服务器的进程信息
- #ps -ef ,UID用户id,PID进程id,PPID父级进程id,C表示CPU占用率,STIME启动时间,TTY终端设备(?表示不是终端发起),TIME进程执行时间,CMD进程名称或路径
- -e ,等价于 -A,表示列出全部的进程
- -f ,显示全部的列(显示全字段)
- #ps -ef | grep 进程名称,查看指定进程
5.top ,查看服务器的进程占的资源
- #top ,动态显示进程占用资源,按q退出,
- PR权重,VIRT虚拟内存,RES常驻内存,SHR共享内存,S进行状态S表示睡眠R表示运行,TIME执行的呃时间,COMMAND进程名称或路径
6.du ,查看目录的真实大小
- #du -sh 目录路径,目录里面的文档大小
- -s ,显示汇总的大小;-h 以高可读性的形式进行显示
7.find ,用于查看文件
- #find 路径范围 选项 选项的值,
- -name,按照文档名称搜索(支持模糊搜索)
- -type,按文档的类型进行搜索,文档类型:-表示文件find中用f表示,d表示文件夹
- 比如 #find /etc -name *.conf | wc -l ,#find /etc -type f | wc -l
8.service ,用于控制一些软件的服务启动、停止、重启
- #service 服务名 start|stop|restart ,比如#service httpd start ,启动之后可以使用 #ps -ef | grep httpd 查看进程
9.kill ,关闭进程或者服务
- #kill 进程PID ,如果没有对应的PID会有相应提示
- #killall 进程名称 ,不需要使用ps查看PID,#killall httpd
10.ifconfig ,操作网卡
- #ifconfig ,获取网卡信息,ipv4地址是在inet addr后面
11.reboot ,重启计算机
- #reboot ,重启;#reboot -w ,模拟重启但不重启,只写关机和开机的日志
12.shutdown ,关机
- #shutdown -h now ["关机提示"]或 #shutdown -h 15:25 ["关机提示"],立即关机和定时关机
- Ctrl + c ,或者 #shutdown -c ,(centos7.X之后)取消关机计划
- #init 0 ,#hait ,#poweroff ,其他关机方式
13.uptime ,输出计算机的持续在线时间,开机到现在运行的时间
- #uptime ,其中15:58表示15小时,users连接数,load average负载,windows中可以使用systeminfo
14.uname ,获取计算机操作系统相关信息
- #uname ,获取操作系统的类型
- #uname -a ,操作系统完整信息,内核版本,发布时间
15.netstat ,查看网络连接状态
- #netstat -tnlp ,查看网络连接状态
- -t 列出tcp协议的连接,
- -n 将地址从字母转为ip地址,将协议转换为端口号来显示
- -l 过滤出“stat(状态)”列出其值为LISTEN(监听)的连接
- -p 显示发起连接的进程pid和进程名称
16.man ,manual 手册
- #man 指令 ,查看指令的信息,按q退出
17.其他一些
- 删除光标前或后的内容,ctrl+u删除前面的,ctrl+k删除后面的
- 删除/tmp下所有A开头的文件,#rm -f /tmp/A*
- 把/etc/passwd备份到/tmp目录下,#cp /etc/passwd /tmp/
- 查看最后创建的3个用户,#tail -3 /etc/passwd
- 统计当前系统总的用户数,#wc -l /etc/passwd ,或 #cat /etc/passwd | wc -l
- 创建/tmp/test.conf文件,#touch /tmp/test.conf
- 用vim打开/tmp/test.conf,#vim /tmp/test.conf
- 查看/etc/passwd的头3行和尾3行,#head -3 /etc/passwd ,#tail -3 /etc/passwd
- 一次性创建目录/test/1/2/3/4,#mkdir -p /test/1/2/3/4
- 返回当前账户家目录,#cd ,#cd ~
- 查看/etc所占磁盘空间,#du -sh /etc
- 删除/tmp下所有文件,#rm -rf /tmp/*
- 启动Apache服务,并检查是否启动成功,#service httpd start ,#ps -ef | grep httpd
- 杀死Apache的进程,#killall httpd ,#kill apache进程PID
2、netstat,查看网络的连接信息
语法:
- #netstat -tnlp,-t tcp协议,-n 将字母转换成数字,-l 列出状态为监听的,-p 显示进程相关信息
- #netstat -an,-a 表示全部,-n 将字母转化成数字
3、traceroute,查找目前主机与目标主机之间所有的网关(路由器,会给沿途各个路由器发送 icmp 数据包,路由器可能会不给响应)。该命令不是内置命令,需安装。
语法:#traceroute 主机地址
4、arp,地址解析协议ARP,是根据 IP 地址获取(MAC)物理地址的协议。
语法:
- #arp -a,查看本地缓存 MAC 表
- #arp -d 主机地址,删除指定的缓存记录
5、tcpdump,抓包,抓取数据包
语法:
- #tcpdump 协议 port 端口,#tcpdump port 22
- #tcpdump 协议 port 端口 host 地址
- #tcpdump -i 网卡设备名
2、域名购买
步骤:
- 在产品中选择域名购买,输入想要注册的域名,查看是否可以注册
- 选择需要的域名,点击结算
- 购买成功在后台域名中查看信息
3、域名备案,当申请域名的人想要在国内使用域名,则需要向当地的通信管理局(省级)去申请报备。备案前提:需要使用境内服务器,必须备案。
在管理后台点击备案---ICP备案系统,点击新增主体备案,填写完信息后点击增加网站,其中的备案服务号需要在备案--备案服务号申请中申请;申请到备案号之后,会让用户下载一个图片--网站真实性核验单,下载打印填写好上传到阿里云备案系统中,后面等待初审,初审通过后继续下一步,需要拍照,上传照片等待管局审核,通过后会收到工信部发送的短信与邮件通知,里面有备案号和备案密码(用于注销备案)。
4、域名解析,将域名绑定到一个服务器地址的操作,后台中点击解析。当在浏览器中输入一个域名,会向发送请求到 DNS Server,将域名转换成 IP 地址的服务器。点击添加解析,记录类型中A-将域名指向一个IPV4地址,CNAME-将域名指向另一个域名,MX-将域名指向邮件服务器地址;记录值是服务器的 IP 外网地址。
5、配置生产环境
6、上传代码,需要用到上传工具。
test.sh。运行的时候需要写成 #./test.sh 或 #/root/test.sh 或 /bin/bash test.sh,linux 系统中的 PATH 环境变量存在路径是 /bin,/sbin,/usr/bin,/usr/sbin 等。#!/bin/bash
echo 'hello world!'
www.baidu.com,访问百度。
c. yum 等傻瓜式安装,不更改来源的情况下默认需要联网的。
常用 yum 指令:
- #yum list ,列出本机已经装的和可以装的软件
- #yum search 名,搜索是否有可用安装包
- #yum [-y] install 包名,-y 可以避免安装的时候提示是否确认安装
- #yum [-y] update [包名],更新指定的包,不指定就更新全部的包
- #yum [-y] remove 包名,卸载指定的包
2.安装 mysql
在安装包之前可以先更新以下#yum update,然后添加 EPEL 源,这个为“红帽系”的操作系统提供额外的软件包。比如:
- rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm ,安装epel-release
- rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm ,安装PHP7的rpm源
- rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm ,安装mysql源
- #yum install mysql-server,是安装服务端的包,不是安装客户端的
- #yum install mysql-community-server.x86_64,安装 mysql5.6
3.mysql 初始化
- #service mysqld start ,开启mysql服务
- #netstat -tnlp ,查看端口号,mysql 默认端口号 3306
- #mysql_secure_installation
- Enter current password for root (enter for none): 第一次设置直接 enter 设置密码
- Remove anonymous users? [Y/n] 是否移除匿名用户,选择Y
- Disallow root login remotely? [Y/n] 不允许 root 远程登陆,n
- Remove test database and access to it? [Y/n] 是否移除测试数据库,n
- Reload privilege tables now? [Y/n] 是否重新加载权限表,当更改了mysql用户相关信息是 Y
设置了能远程登陆可能存在不能远程登陆的情况,需要修改用户表里的数据:
- mysql> SELECT host,user FROM user; # 查询所有用户情况
- mysql> UPDATE user SET host='%' WHERE host='localhost.localdomain'
- 最后刷新权限表或者重启 mysql
- mysql> flush privileges;
4.mysql 启动:#service mysqld start | stop | retart
- 进入 mysql 的方式: #mysql -u 用户名 -p
5.mysql 默认目录/文件位置
数据库存储目录:/var/lib/mysql
配置文件:/etc/my.cnf
6.备份与还原
a. 备份
全量备份(数据和结构):#mysqldump -u root -p 密码 -A > 备份文件路径.sql
指定库备份(数据和结构):#mysqldump -u root -p 密码 库名 > 备份文件路径.sql
多个库备份(数据和结构):#mysqldump -u root -p 密码 --databases db1 db2 >备份文件路径.sql
# 计划任务,比如每隔 1 分钟备份一次数据库
#!/bin/bash
filename="test"`date +'%Y$m%d%H%M%S'`".sql"
mysqldump -uroot -padmin@123 -A > /root/$filename
#corntab -e
# 分 时 日 月 周 命令
* * * * * /root/test.sh
b. 还原
还原部分分为:mysql 命令行 source 方法和系统命令方法
1.还原全部数据库:
(1)mysql 命令行:mysql> source 备份文件路径
(2)系统命令行:#mysql -uroot -padmin@123 < 备份文件路径
2.还原单个数据库(需指定数据库)
(1)mysql> use 库名
mysql> source 备份文件路径
(2)mysql -uroot -padmin@123 库名 < 备份文件路径
设置临时 mysql 连接字符集:mysql>SET NAMES utf8;
7.mysql 的远程管理工具
分为两大类:B/S 架构 和 C/S 架构。在 B/S 中有 PMA(phpMyAdmin); C/S 中有 navicat 等。
(1)使用在服务器端下载的方式进行下载:
- #wget 地址
- 例如要下载 nginx 到 “/usr/local/src”,右键复制官网 tar 包链接地址
- #wget -P /usr/local/src http://nginx.org/download/nginx-1.15.12.tar.gz
(2)解压 nginx 安装包
- #tar -zxvf nginx-1.15.12.tar.gz
(3)进入解压目录,配置、编译、安装 - #./configure --prefix=/usr/local/nginx ,指定安装路径
- 如果配置时报错没有 PCRE 库,#yum install pcre-devel,然后 #./configure --prefix=/usr/local/src --with-pcre
- 如果报错缺少 zlib 库,#yum install zlib-devel ,然后 #./configure --prefix=/usr/local/src --with-pcre --with-zlib=/usr/local/src/包名
- #make ,编译
- #make install ,安装
2.运行 nginx,因为 apache 默认占用端口是 80,nginx 占用的也是 80,所以直接启动 nginx 是启动不起来的,需关闭 apache,#service stop httpd
- 开启 nginx 服务:#/usr/local/nginx/sbin/nginx
- 重启/重载配置文件:#/usr/local/nginx/sbin/nginx -s reload
3.卸载编译安装的软件
- #rm -rf 软件的安装路径,卸载一个编译安装的软件的时候必须先停止。
测试 apache 在浏览器中输入 ip 地址能运行 apache 测试页面就可以了。
测试 PHP (默认的 apache 站点目录:/var/www/html):创建一个 test.php 文件,添加代码
- 如果页面刷新显示是代码,则需要配置 /etc/httpd/conf/httpd.conf,配置完成后需要重启 apache 服务。
AllowOverride none
Require all denied --- >>> Require all granted
AddType application/x-gzip .gz .tgz
# 下面添加一行
AddType application/x-httpd-php .php
DirectoryIndex index.html -->> DirectoryIndex index.html index.php
2.安装 mysql :#yum install mysql-server
阿里云后台相关的端口需要打开,比如 80 ,3306
3.项目上线
上传文件,如果配置的时候显示不支持 mysqli_connect(),则需要 mysqli 扩展:#yum install php-mysqli
- #scp -r per1@10.1.1.1:/tmp/dir1 /data/code,-r 递归拷贝
(2)cp 命令:本地拷贝
(3)ssh 客户端工具使用:
- #ssh 远程连接的主机ip地址,如 #ssh 10.1.1.1,不指定用户就是当前用户,前提是远程主机有对应用户
- #ssh 用户名@主机ip地址,如 #ssh per1@10.1.1.1
- #ssh -l per1 -p 22 10.1.1.1 , #ssh 10.1.1.1 hostname
(4)查看端口:
(5)禁止 root 远程登录,查看 sshd 服务:
- 其中 ../init.d/sshd 是启动脚本,./sshd_config 配置文件,../sbin/sshd 程序本身
- 修改配置文件,#man sshd_config,查看配置文件
- PermitRootLogin no,找到位置并设置,保存重启服务
3、修改 sshd 服务默认端口为 10022(在生产服务器上修改的)
- 首先查看端口是否被占用,
- #grep 10022 /etc/services ,#lsof -i 10022,#ss -a|grep 10022 ,#netstat -a|grep 10022
- 修改 sshd 配置文件, Port 10022,重启服务
- 跳板机上登录: #ssh -lper1 10.1.1.1 -p10022
- 更改 ssh 客户端配置文件不想验证指纹,StrictHostKeyChecking yes,表示直接比对 ~/.ssh/known_hosts 文件中的公钥
4、ssh 免密登录,跳板机上生成一对密钥:公钥 和 私钥。生成之后把 公钥 拷贝到远程主机的 ~/.ssh/ 目录里。
- 生成密钥:#ssh-keygen ,然后回车,id_rsa 私钥,id_rsa.pub 公钥
- 拷贝公钥到远程主机:#ssh-copy-id -i per1@10.1.1.1 或者 #scp id_rsa.pub per1@10.1.1.1:/home/per1/.ssh/authorized_keys
5、rsync 实现数据同步
(1)sync 同步,async 异步,rsync 远程同步。rsync 可以保存原有的权限,owner,group,时间,软硬链接,文件 acl,文件属性信息等。
(2)本地同步:
- #rsync -av /dir1/ /dir2 ,dir1 后面的 / 会影响同步结果,前面是来源,后面是目的地
- #rsync -av --delete /dir1/ /dir2 ,传出多余的文件
(3)远程同步:
- #rsync -av --delete /dir1/ /dir2 ,传出多余的文件
- 同步到远程push: #rsync -avR /dir1/ 10.1.1.1:/backup ,R 同步 dir1 目录及文件
- 本地同步远程pull :#rsync -avR 10.1.1.1:/backup/app /dir1
(4)rsync 作为后台程序使用 - 创建配置文件:#vim /etc/rsyncd.conf
- 文件内容: [app_name] path=/app/project log file=/var/log/rsync.log
- #rsync --daemon ,启动服务
- 查看是否启动: #netstat -ntlp | grep 873