LINUX基础操作梳理
适用系统:CENTOS7
centos + mysql + java + git + nginx + python +js
LINUX安装
安装centos的几种方式
1.双系统安装 WIN+LINUX 2.单独安装LINUX 3.通过虚拟化软件安装LINUX(windows+vmware+linux) 省事、省钱、vmware可以虚拟化多个操作系统、vmwareworkstation、vmware esxi/vsphere 4.物理机 + vmware + docker 5.kvm 6.物理机 + docker
通过虚拟化软件安装linux的步骤。
1.下载centos镜像 https://www.centos.org/download/ http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso https://opsx.alibaba.com/mirror#阿里云官方镜像站 2.下载安装vmware虚拟机 (Windows用户)VMware Workstation是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。 下载激活地址:http://www.zdfans.com/html/5928.html 安装虚拟机。教程网上很多:https://https://www.cnblogs.com/yanjidong/articles/13184937.html 3.在虚拟机上安装centos7 把下载好的centos7镜像在虚拟机上进行安装,很简单。https://https://www.cnblogs.com/yanjidong/articles/13184937.html 4.安装完成,重启后,输入root账号和密码,进入系统。
忘记root密码怎么办?
1.重启 Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面 2.在 linux16 参数这行的最后面追加“rd.break”参数,然后按下 Ctrl + X 组合键来运行修 改过的内核程序 3.大约 30 秒过后,进入到系统的紧急求援模式 4.依次输入以下命令,等待系统重启操作完毕,然后就可以使用新密码来登录Linux 系统了 mount -o remount,rw /sysroot chroot /sysroot passwd touch /.autorelabel exit reboot 5.图文详细介绍 https://www.cnblogs.com/yanjidong/articles/13184937.html
连接网络
1.上网方式选择桥接 2.在网络配置文件中写入静态ip地址,网关,掩码,dns 1.在windows中用ipconfig -all 查看主机上网的网络配置,记下ip网段,网关,掩码 2.虚拟机linux中打开vim /etc/sysconfig/network-scripts/ifcfg-eth0(或者是其他名字ens33),进行网络配置(根据上面查到的信息) 3.重启网络,检查网络是否可用 systmectl restart network # centos7中启用systemctl,7以下使用service ip addr # 检查ip等网络配置 ping baidu.com # 检查是否可用 网络配置具体内容,请看下面详细介绍。
通过xshell远程管理linux
在windows终端安装xshell,连接虚拟机上的linux服务器,进行管理。(方便,平时在工作一般也是这种管理模式) ssh root@ip地址
linux文件目录结构
1.以根‘/’目录开始
2.linux以‘/’分割目录,windows以反斜杠‘\’分割目录 #× 斜杠和反斜杠
3.目录分类
/root 超级用户的家目录 /home/yanjidog 普通用的家目录 /etc 存放软件配置文件,一般通过yum,pip安装的软件,配置文件一般都在/etc下 /etc/my.conf mysql的配置文件 /etc/redis.conf redis的配置文件 /sbin 存放可执行命令文件 /bin 存放可执行命令文件 /usr/local/bin 存放可执行命令 文件 /opt 存放额外安装的软件目录 比如,安装nginux,python3.8,正规的存放目录是/opt/python38|nginx1-12 /tmp 存放临时文件,不重要的文件,文件夹 /var 存放系统日志文件居多
4.目录中文件颜色的意思
绿色:代表可执行文件
蓝色:代表文件夹
白色:代表普通文件
5.linux文件、文件夹操作命令
#以树状图显示文档目录结构 tree /tmp #查看磁盘使用情况 1.查看分区和磁盘 lsblk 2.查看空间使用情况 df -h 3.分区工具查看分区信息 fdisk -l 4.查看分区 cfdisk /dev/sda 5.查看内存大小 free -h #对目录的操作 touch 创建普通文件 mkdir 创建文件夹 -p参数:递归创建文件夹 mkdir -p /tmp/1/2/3 rm 删除文件或文件夹 rmdir 删除空文件夹 mv 旧文件名 新文件名 :改名 cat 查看文件内容 ls 查看文件夹内容 ls -l ll pwd 打印当前目录路径 6.其他说明 文件夹下 以 .开头的文件,默认是隐藏文件 . 一个点,代表当前工作目录 .. 两个点代表上一级目录 - 上一次工作目录 ~ 代表当前登录的用户的家目录,root是/root ,普通是/home/yanjidong
补充:cp 复制
cp xxx /tmp cp -r 递归,复制目录以及目录的子孙后代 cp -p 复制文件,保持文件属性不变,可以用stat
linux的环境变量
通过echo命令打印出变量的值
echo $PATH linux环境变量通过冒号分割区分 /usr/local/sbin:/usr/bin:/opt/python38: linux通过which找到命令的path变量 which python3
linux的路径概念
#绝对路径 在任何位置都可以通过绝对路径找到文件 : /tmp/1/2/a.txt #相对路径 以当前工作目录为参考点,找到某个文件 当你自目录1中时 : 1/2/a.txt ./first.py # ./ 代表当前工作路径 . 是当前目录 / 是分隔符
输入/输出 重定向符号
1.>> 追加重定向,把文字追加到文件的结尾,理解为with open 的a模式
2.> 重定向符号,清空源文件所有内容,然后把文字覆盖到文件末尾,理解为w模式
3.< 输入重定向,把命令信息,写入到前面的命令
4.<< 将输入结果输入重定向
echo "python" > /tmp/a.txt echo "yanjidong" >> /tmp/a.txt cat >>/tmp/a.txt << AAA
#把命令执行的结果信息,写入到文件中
ip addr > /tmp/a.txt
echo命令
用于在终端输出字符串或变量提取后的值,echo [字符串|$变量] 1.默认把内容显示到终端 echo "python good" 2.写入到文件 echo "python good" > /tmp/a.txt 3.去除打印PATH值 echo $PATH
Linux提供的管道符“|”
两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
#检查python程序是否启动 ps -ef | grep python #找到/tmp目录下所有txt文件 ls /tmp | grep .txt #检查nginx的端口是否存活 netstat -tunlp | grep nginx
常用的其他命令
head、tail命令
head显示文件前几行,默认前10行 tail显示文件后几行,默认后10行 #查看前两行 head -2 /tmp/a.txt #查看后两行 tail -2 /tmp/a.txt #持续刷新显示 tail -f xx.log #显示文件10-30行 head -30 /tmp/a.txt |tail -21 tail -f /var/log/mysql.log 常用于 对日志文件监控,检测,日志实时写入的信息
sed命令
sed命令和gerp一样,用于对文本过滤,sed还可以修改文本。(比较好用)
sed命令和gerp一样,用于对文本过滤,sed还可以修改文本。 s 替换指令 d 删除指令 g 全局替换 #找到/tmp/pwd.txt文件中所有的root字符串,全局替换为AAA,但是不会写入到文件,只会返回替换结果 sed -i 's/root/AAA/g' /tmp/pwd.txt sed 参数 -i 编辑,写入到文件,不会返回命令执行结果,直接生效 #找到26行,删除, sed -i '26d' /tmp/pwd.txt #删除文件空白行 sed -i '/^$/d' filename.txt
查找命令的绝对路径
which rm whereis xxx
scp命令
Linux scp命令用于Linux之间复制文件和目录。 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。 #传输本地文件到远程地址 scp 本地文件 远程用户名@远程ip:远程文件夹/ scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名 scp -r 本地文件夹 远程用户名@远程ip:远程文件夹/ scp -r /tmp/a root@ip : /home/a #复制远程文件到本地 scp root@ip : /home/a.txt /tmp/a.txt scp -r root@ip : /home/a /home/
du命令
统计文件,文件夹大小 面试题:请写出如何统计 /var/log/django/ 文件夹的大小 du -sh /var/log/django
top命令
top 命令用于动态地监视进程活动与系统负载等信息
时间同步的命令
ntpdate -u ntp.aliyun.com 和阿里云同步 //以系统时间为基准,修改硬件时间 [root@a_python ~ 10:29:07]#hwclock -w
文本编辑器 Vim/Vi (三个模式:命令模式、输入模式、底线命令模式)
1、打开一个文本文件
vim filename //没有时会新建一个文件
2、刚进入编辑器是命令模式,输入i,a,o进入输入模式。编辑模式下的快捷键如下:
i,a,o 插入光标位置
yy 拷贝光标所在行
dd 删除光标所在行
D 删除当前光标到行尾的内容 dG 删除当前行到文档尾部的内容 p 粘贴yy所复制的内容 x 删除光标所在的字符 u 撤销上一步的操作 3yy 拷贝光标所在的3行 5dd 删除光标所在5行
3、编辑完成后,esc返回命令模式。在命令模式下输入冒号(英文的:),就进入了底线命令模式,在底线命令模式下可以输入单个或多个字符的命令,常用命令有:
:q! 强制退出 :wq! 强制写入退出 :set nu 显示行号 :数字 调到数字那行 随时按下esc可以退出底线命令模式
4、vim的常用按键
1 移动: 2 3 w(e) 移动光标到下一个单词 4 b 移动到光标上一个单词 5 6 数字0 移动到本行开头 7 $ 移动光标到本行结尾 8 9 H 移动光标到屏幕首行 10 M 移动到光标到屏幕的中间一行 11 L 移动光标到屏幕的尾行 12 gg 移动光标到文档的首行 13 G 移动光标到文档尾行 14 15 ctrl + f 下一页 16 ctrl + b 上一页 17 18 `. 移动光标到上一次的修改行 19 20 查找: 21 22 /chaoge 在整篇文档中搜索chaoge字符串,向下查找 23 ?chaoge 在整篇文档中搜索chaoge字符串,向上查找 24 25 * 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处 26 # 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处 27 28 gd 找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上 29 30 % 找到括号的另一半!! 31 32 移动光标的方法 33 h 或 向左箭头键(←) 光标向左移动一个字符 34 j 或 向下箭头键(↓) 光标向下移动一个字符 35 k 或 向上箭头键(↑) 光标向上移动一个字符 36 l 或 向右箭头键(→) 光标向右移动一个字符 37 38 向下移动5行 5j 39 向右移动10字符 10l 40 41 n(space) 按下数字n,例如10,然后按下空格,光标会向右移动10个字符
网络配置
1、配置基础网络环境时的基础命令,如果你电脑上没有 ifconfig
yum install net-tools -y
- ifconfig 查询、设置网卡和ip等参数
- ifconfig 显示up状态的信息
- ifconfig -a 显示所有状态的信息
- ifconfig eth0 192.168.120.56 netmask 255.255.255.0 临时添加网卡eth0的地址
- ifup,ifdown 简单的方式启动关闭网络
- 这两个命令其实调用
- /etc/init.d/network start
- /etc/init.d/network stop
- /etc/init.d/network restart
- 这两个命令其实调用
- ip
- ip addr 显示所有端口信息
- ip -s link ls eth0 显示指定网卡信息
- ip addr add 192.168.2.1/24 dev eht0 临时添加网卡eth0的地址
2、装好linux后,需要用xshell进行远程连接,那就要获取ip地址,但有时候网卡没有启动,或没有配置地址。
#编辑网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改配置参数,比较重要的两个参数 BOOTPROTO={static|none|dhcp|bootp} 一般使用static或者dhcp,想用xshell就选择static ONBOOT=yes 开机时自动激活此网络接口 一个网卡配置文件示例如下:
TYPE=Ethernet #网卡类型 DEVICE=eth0 #网卡接口名称 ONBOOT=yes #系统启动时是否自动加载 BOOTPROTO=static #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议 IPADDR=192.168.1.11 #网卡IP地址 NETMASK=255.255.255.0 #网卡网络地址 GATEWAY=192.168.1.1 #网卡网关地址 DNS1=10.203.104.41 #网卡DNS地址 HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址 BROADCAST=192.168.1.255 #网卡广播地址
3、查看DNS配置
在vim /etc/sysconfig/network-scripts/ifcfg-eth0配置完dns后,在/etc/resolv.conf中看到。
#配置文件 cat /etc/resolv.conf #dns服务器地址 nameserver 114.114.114.114
#通过nslookup解析域名
nslookup baidu.com
本地强制dns解析文件/etc/hosts (windows系统:windows/system32/driver/etc/hosts)
指定本地解析: /etc/hosts 127.0.0.0 cnblogs.com/yanjidong
查看系统版本信息
#查看系统版本信息 cat /etc/redhat=release #查看内核版本 uname -r #查看系统多少位 uname -m #查看内和所有信息 uname -a
#更改主机名
hostnamectl set-hostname yanjidong's host
LINUX用户与权限
# 超级用户是root, uid=0;gid=0,通过id命令查看 id root #普通用户常见 useradd yanjidong #更改用户密码 passwd yanjidong passwd root #用户通过ssh登录系统 ssh yanjidong@10.10.1.1 #切换用户,-号很重要,意味着完全切换,即环境变量信息也变更为新用户的 su - username su - root #用户信息 /etc/passwd 账号信息 /etc/shadow 密码信息 /etc/group 用户组信息 #删除用户 userdel -f 强制删除 userdel -r 同时删除用户以及家目录 userdel -rf yanjidong
#查看文件、文件夹所有权限 ls -l /yanjidong/* drwxr--r-- 1 root root 167883 1.gif #文件、文件夹的用户分类,分为三种:user(属主) group(属组) other(其他人) d(文件,文件夹,链接) rwx(读写执行) r-- r-- 文件类型 属主的权限 属组的权限 其他人的权限 #rwx 对应的8进制权限数字 r 4 w 2 x 1 777(rwxrwxrwx) : 代表 三个分类都是最大权限
#更改文件用户或用户组 chown 用户名 file chgrp -R 组名 文件名|目录名 #更改文件权限,-R为递归遍历文件夹 chmod -R 777 /tmp
LINUX中的快捷方式-软连接
#软连接命令 ln -s 目标文件未见 软连接位置 ln -s /opt/python3.8/bin/python3.8 /usr/bin/python3
LINUX的命令提示符如何修改
#用PS1变量控制命令提示符。临时更改,重启丢失 PS1='[\u@\h \W]\$' \u:当前账户 \h:主机名 \w:完整路径 \W:相对路径 \t:时间 #永久更改,每次启动配置 vim /etc/profile 在最底行写入变量赋值 PS1='[\u@\h \w \t]\$'
文件解压缩
#tar解压缩命令 tar -zxvf Python-3.4.tgz #解压 tar -czvf myfile.txt.tar.gz myfile.txt #压缩
查看网络端口
#查看网络端口 netstat -tunlp | grep 3306 #过滤出需要的3306端口 netstat -tunlp | grep 8000
进程操作
1 #查看杀死进程的流程 2 1.通过ps -ef找到你想杀死的进程,然后观察pid号 3 ps -ef | grep mysql 4 用户名:root pid:33588 5 2.通过kill命令杀死pid 6 kill 33588 7 3.如果遇到杀不死的用-9 强制杀死 8 kill -9 33588 9 #一次性杀死多个有依赖的进程 10 ps -ef | grep nginx 11 killall nginx
查看某个网络进程的目录路径
netstat -nlp # -t 只列出tcp
根据看到的pid号操作。系统会用PID号在/proc下建立一个对应的目录
cd /proc/174746
ll #查看目录内文件详情 找到exe 对应的进程目录
LINUX的帮助手册
man ls man kill
防火墙操作
selinux: linux内置防火墙
关闭selinux
1 1.通过修改配置文件,重启机器,可以永久关闭selinux防火墙 2 3 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 4 5 2.临时关闭selinux,重启后失效 6 7 1.先获取selinux状态 8 9 getenforce 10 11 2.临时关闭selinux 12 13 setenforce 0
iptables: linux软件防火墙
关闭iptables
1 1.查看iptables规则 2 3 iptables -L 4 5 2.清空iptables规则 6 7 iptables -F 8 9 3.关闭iptables服务 10 11 systemctl stop firewalld
firewalld: linux软件防火墙,centos7默认已经使用firewall作为防火墙了
关闭firewalld防火墙
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #关闭防火墙
systemctl disable firewalld #关闭防火墙开机启动
systemctl is-enabled firewalld.service #检查防火墙是否启动
linux中文设置
1.查看linux当前字符集 echo $LANG # 变量前加$是打印这个变量的值 2.永久生效,更改字符集,写入配置文件 vim /etc/locale.conf LANG="zh_CN.UTF-8" 3.使得配置文件生效 source /etc/locale.conf 4.保证客户端软件编码和linux一致 xshell utf-8 centos utf-8
linux的计划任务crontab
1 语法格式: 2 3 * * * * * command 4 5 1,2 * * * * /usr/bin/rm -rf /tmp/1.text 6 7 分钟(0-59) 小时 日期 月份 星期 命令 8 9 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 10 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 11 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 12 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。 13 14 例子: 15 16 #每周一到周五的凌晨1点,清空/tmp目录的所有文件 17 18 0 1 * * 1-5 /usr/bin/rm -rf /tmp/* 必须用绝对路径 19 20 #每月的1,10,22日的4:45重启nginx 21 * * * * * 22 分 时 日 月 周 23 24 45 4 1,10,22 * * /opt/nginx/sbin/nginx -s reload 25 26 练习这个crontab规则,写入到crontab文件中 27 通过命令 crontab -e 打开文件
软件包安装卸载管理
1.rpm命令管理,需要手动处理依赖关系。安装小软件,可以选择rpm安装
1.下载rpm包 wget https://rpmfind.net/...... 2.安装rpm包 rpm -ivh lrzsz-0.12.20.rpm 3.rpm常用命令 安装软件的命令格式 rpm -ivh filename.rpm # i表示安装 v显示详细过程 h以进度条显示 升级软件的命令格式 rpm -Uvh filename.rpm 卸载软件的命令格式 rpm -e filename.rpm 查询软件描述信息的命令格式 rpm -qpi filename.rpm 列出软件文件信息的命令格式 rpm -qpl filename.rpm 查询文件属于哪个 RPM 的命令格式 rpm -qf filename
2.通过yum自动安装软件,自动处理依赖关系,联网情况下最方便。
yum安装软件,其实就是在线搜索一个rpm包,然后自动帮你rpm -ivh name.rpm
yum install mysql
yum install mysql -y
yum源的配置
1.知道yum源的老家在哪里?
cd /etc/yum.repos.d/ ls 看一下有哪些yum源文件 以.repo后缀的就是yum源文件 repo文件可以使用vim编辑
2.我们要更改linux的yum源为alibaba的yum源仓库
1.找到阿里巴巴的yum网站 https://opsx.alibaba.com/mirror 2.找到centos标签,点击 “帮助” 3.找到centos7相关,找到以下命令 wget -0 /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 4.在linux上执行命令,下载阿里巴巴的yum源文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 5.清空原本yum的缓存 yum clean all 6.安装linux的额外仓库源,也就是epel源,继续在阿里云源上找,找到epel哪个标签 7.安装找到的epel源,在linux上输入命令 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 8.生成yum的缓存,便于之后加速下载 yum makecache
3.下载源码,编译安装,以及程序的启动配置
1 1.首选解决软件包依赖问题 2 3 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 4 5 2.下载软件的源代码 6 7 如 python3.8.tgz 8 9 3.解压缩软件源代码,切换进入源代码目录 10 11 4. /configure释放变异文件,make 编译,make install 编译安装。也可以make && make install 12 13 例子:编译安装python3.8 14 15 1.解决依赖关系 16 17 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 18 19 2.下载python源代码 20 21 wget https://www.python.org/ftp/python/3.8/Python-3.4.7.tar.xz 22 23 3.解压缩pthon源代码 24 25 xz -d python-3.8.tar.xz 26 27 tar -xf pthon-3.8.tar 28 29 4.切换进入python源代码目录 30 31 cd /opt/python-3.8 32 33 5.开始编译安装,释放编译文件 34 35 ./configure --prefix=/opt/python38/ #目前暂时还不会生成这个文件夹 36 37 6.开始编译,编译安装 38 39 make && make install # 这两部走完,才会生成创建上面的文件夹 40 41 ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。 42 #这个confiure脚本执行后,会生成一个Makefile文件 43 44 make是用来编译的,它从Makefile中读取指令,然后编译。 45 46 make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。 47 48 7.检查你自己制定的安装路径, /opt/python38/ 49 50 查看pthon38下的bin目录,python3的可执行文件都在这 51 52 8.配置软连接,快捷启动。或者直接把pthon38/bin写入环境变量(如下,尽量用这一步) 53 54 ln -s /opt/python38/bin/python3 /usr/bin/python3 55 ln -s /opt/python38/bin/pip3 /usr/bin/pip3 56 57 9.配置系统环境变量,配置PATH,加入python3的目录 58 59 #尽量用这一步 60 61 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python347/bin/ 62 #这一步尽量别用了 63 PATH=$PATH:/opt/python347/bin/ 64 65 #配置环境变量需谨慎,如果配错了,你的其他命令也会丢失! 66 67 10.写入个人配置文件,永久生效/etc/profile 68 69 vim /etc/profile #编辑个人配置文件,写入PATH 70 71 PATH=$PATH:/opt/python38/bin/ 72 73 source /etc/profile #读取一下配置文件,生效配置。