LInux 入门.md


vmware下载 virtual box下载

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
www.baidu.com

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 网卡设备名
阿里云,选择产品中的“云服务器 ECS”,点击立即购买。
  • 选择具体配置:地域、IO等然后购买
  • 进入后台查看信息,更多里面选择“重置密码”,然后重启服务器,通过远程终端工具就能连接了。
  • 2、域名购买
    步骤:

    1. 在产品中选择域名购买,输入想要注册的域名,查看是否可以注册
    2. 选择需要的域名,点击结算
    3. 购买成功在后台域名中查看信息

    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 软件的安装路径,卸载一个编译安装的软件的时候必须先停止。
    www.example.com:80 注释,重启就可以了

    测试 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

    www.baidu.com www.baidu.com per1@10.1.1.1:/tmp/
  • #scp 远程文件 本地路径,将远程文件拷贝到本地
    • #scp -r per1@10.1.1.1:/tmp/dir1 /data/code,-r 递归拷贝
      (2)cp 命令:本地拷贝
      (3)ssh 客户端工具使用:
  • #ssh --help ,#man 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)查看端口:
  • #netstat -tnlp | grep 22 或者 #ss -ntlp | grep 22 或者 #lsof -i :22
    (5)禁止 root 远程登录,查看 sshd 服务:
  • #rpm -qf /usr/sbin/sshd,查看安装包
  • #rpm -ql openssh-server ,查看安装生成哪些文件
    • 其中 ../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)远程同步:
    • 同步到远程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
    qq.com. baidu.com. google.com.