Linux笔记 #2 实用操作详解

1.各类小技巧(快捷键)
  • 强制停止
// 可以使用ctrl + c强制停止某些程序的运行
^C

  • 退出或登出
// 可以通过快捷键ctrl + d退出账户的登录
^D
// 或者可以退出某些程序的专属页面
python
^D

  • 历史命令搜索
// 查看历史输入过的命令
history

// !命令前缀,自动执行上一次匹配前缀的命令
!p
// 自动匹配上次执行的python

// ctrl + r,输入内容去匹配历史命令
^r
// 回车键可以直接执行
// 键盘左右键,可以得到此命令(不执行)

  • 光标移动快捷键
// ctrl + a:跳到命令开头
// ctrl + e:跳到命令结尾
// ctrl + 鼠标左键:向左跳一个单词
// ctrl + 鼠标右键:向右跳一个单词

  • 清空终端内容
// ctrl + l:清空终端内容
clear
// 通过clear命令也是一样的效果

2.软件安装
  • yum命令
// yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题
yum [-y] [install | remove | search] 软件名称
// y:自动确认,无需手动确认安装或卸载过程 
// install:安装
// remove:卸载
// search:搜索

// yum命令需要root权限,可以su切换到root,或使用sudo提权
// yum命令需要联网

// 后面会使用wget命令从网络上get数据,所以首先需要下载安装它
yum [-y] install wget

  • apt命令(扩展:Ubuntu)
apt [-y] [install | remove | search] 软件名称

3.systemctl命令控制软件启动关闭
  • systemctl命令
// Linux系统很多软件(内置或第三方)均使用systemctl命令控制:启动、停止、开机自启
// 能够被systemctl管理的软件,一般也称之为:服务
systemctl start | stop | status | enable | disable 服务名
// start:启动
// stop:关闭
// status:查看状态
// enable:开启开机自启
// disable:关闭开机自启

// 系统内置的服务比较多,比如:
// NetworkManager:主网络服务
// network:副网络服务
// firewalld:防火墙服务
// sshd:ssh服务(FinalShell远程登录Linux使用的就是这个服务)

// 部分软件安装后没有自动集成到systemctl中,我们需要手动添加这个服务

4.ln命令创建软连接
// 在系统中创建软链接,可以将文件、文件夹链接到其它位置。
// 类似Windows系统中的《快捷方式》
ln -s 参数1 参数2
// s:创建软连接
// 参数1:被链接的文件或文件夹
// 参数2:快捷方式的路径

5.日期、时区
  • date命令
// 通过date命令可以查看系统的时间
date [-d] [+格式化字符串]

// -d:按照给定的字符串显示日期,一般用于日期显示
// 示例:
// date -d "+2 day" "+%Y-%m-%d"
// date -d "-3 month" "+%Y-%m-%d"

// 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
// %Y:年(2004)
// %y:年份后两位数字(04)
// %m:月份(01~12)
// %d:日(01~31)
// %H:小时(00~23)
// %M:分钟(00~59)
// %S:秒(00-60)
// %s:自1970-01-01 00:00:00 UTC到现在的秒数(时间戳)
// 示例:
date "+%Y-%m-%d %H:%M:%S"

  • 修改Linux时区命令
// 使用root权限,执行修改时区的命令
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

扫描二维码关注公众号,回复: 17815064 查看本文章
  • ntp程序
// 安装ntp程序自动校准系统时间
yum -y install ntp
// 启动并设置开机自启
systemctl start ntpd
systemctl enable ntpd
// 启动之后会定期帮助我们联网校准系统时间

// 也可以手动校准(需要root权限)
ntpdate -u ntp.aliyun.com

6.IP地址和主机名
  • IP地址
// IPv4地址格式为255:255:255:255
// 使用ifconfig查看本机ip地址,CentOS系统中ens33主网卡中的ip地址就是本机的主ip地址
ifconfig

// 特殊IP地址:
// 127.0.0.1:指代本机的IP地址
// 0.0.0.0:可以用于指代本机;可以在端口绑定来确定绑定关系;IP地址限制中,表示所有IP的意思,这里就表示所有IP放行。

  • 主机名
// 获取系统主机名
hostname

// 修改主机名,需要root权限
hostnamectl set-hostname 主机名

  • 域名解析
// 域名解析的流程:
// 首先检查Linux系统中的配置文件etc文件夹下的hosts文件中是否有记录过该域名的ip地址
// 如果有则通过ip地址访问网站
// 如果没有则联网询问公开的DNS服务器查询该域名的IP地址,再通过该IP地址访问网站

  • 为什么需要固定IP
// 当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。
// DHCP:动态的获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更

  • 在VMware Workstation中配置固定IP
// 在VMware Workstation中配置IP地址网关和网段(IP地址范围)
// 在Linux系统中手动修改配置文件,固定IP

// 切换到root权限,使用vim编辑器修改ens33网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

// 具体修改内容如下:
4 BOOTPROTO="static"
16 IPADDR="192.168.88.128"     // IP地址
17 NETMASK="255.255.255.0"     // 子网掩码固定
18 GATEWAY="192.168.88.2"      // 网关
19 DNS1="192.168.88.2"         // DNS1设置为网关即可

7.网络传输
  • ping命令
// 可以通过ping命令,检查指定网络服务器是否可联通状态
ping [-c num] ip或主机名
// -c num:检查的次数

  • wget命令
// wget是非交互式的文件下载器,可以在命令行内下载网络文件
wget [-b] url
// -b:后台下载,会将日志写入到当前工作目录的wget-log文件中
// url:下载链接

  • curl命令
// curl可以发送http网络请求,可用于:下载文件、获取信息等
curl [-O] url
// -O:用于下载文件,当url是下载链接时,可以使用此选项保存文件
// url:要发起请求的网络地址

// 例如向cip.cc发起网络请求,获取到主机的公网IP地址
curl cip.cc
curl -O http://60.247.146.86:7118/api/UserData/GetUserData

7.端口
  • 端口:物理端口和虚拟端口
  • 虚拟端口:IP地址只能锁定计算机,但是无法锁定具体的程序,端口就是为一个个程序设定具体地址
// Linux系统支持65535个端口
// 公认端口:1~1023,通常用于一些系统内置或知名程序的预留,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要,不要占用这个端口。
// 注册端口:1024~49151,通常可以随意使用,用于松散绑定一些程序/服务
// 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络连接时,用于临时使用

  • 查看端口占用
// 通过Linux命令去查看端口占用情况
nmap 127.0.0.1

// 查看指定端口占用
netstat -anp | grep 端口号
netstat -nltp | grep 端口号

8.进程管理
  • 查看进程
// 可以通过ps命令查看Linux系统中的进程信息
ps [-e -f]
// -e:显示出全部进程
// -f:以完全格式化的形式展示信息(展示全部信息)

  • 进程的关闭
// 可以通过kill命令关闭进程
kill [-9] 进程ID
// -9:表示强制杀死进程

9.主机状态
  • 查看系统资源占用
// 可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
// 默认每5秒刷新一次
top

// PID (Process ID):
// 进程的唯一标识符。
// USER:
// 进程的所有者(用户)。
// PR (Priority):
// 进程的调度优先级。
// NI (Nice value):
// 进程的优先级,数值越大表示优先级越低。
// VIRT (Virtual Memory):
// 进程使用的虚拟内存大小。
// RES (Resident Memory):
// 进程实际使用的物理内存大小。
// SHR (Shared Memory):
// 进程使用的共享内存大小。
// S (%CPU):
// 进程使用的 CPU 百分比。
// MEM (%MEM):
// 进程使用的内存百分比。
// TIME+ (Total CPU time):
// 进程已经占用 CPU 的总时间。
// COMMAND (Command or Program):
// 进程启动时所使用的命令或程序。

// -p:只显示某个进程的信息
top -p 1234
// -d:设置刷新时间,默认是5s
top -d 5
// -c:显示产生进程的完整命令,默认是进程名
top -c
// -n:指定刷新次数
top -n 2
// -b:以非交互非全屏模式运行,以批次的方式执行top,一般配合-n指定输出几次统计信息,将输出重定向到指定文件
top -b -n 3 > /home/mayi/Desktop/Lesson1/top.txt
// -i:不显示任何闲置(idle)或无用(zombie)的进程
top -i
// -u:查找特定用户启动的进程
top -u username

// top交互式快捷键

  • 磁盘信息监控
// 可以使用iostat查看CPU、磁盘的相关信息
iostat [-x] [num1] [num2]
// -x:显示更多信息
// num1:刷新间隔
// num2:刷新几次

// rKB/s:每秒发送到设备的读取请求数
// wKB/s:每秒发送到设备的写入请求数
// %util:磁盘利用率

  • 网络状态监控
// 可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)
sar -n DEV num1 num2
// -n:查看网络
// DEV:查看接口
// num1:刷新间隔
// num2:刷新次数

// IFACE:
// 网络接口的名称。
// rxpck/s:
// 每秒接收的数据包数量。
// txpck/s:
// 每秒发送的数据包数量。
// rxkB/s:
// 每秒接收的数据量(以千字节为单位)。
// txkB/s:
// 每秒发送的数据量(以千字节为单位)。
// rxcmp/s:
// 每秒接收的压缩数据包数量。
// txcmp/s:
// 每秒发送的压缩数据包数量。
// rxmcst/s:
// 每秒接收的多播数据包数量。

10.环境变量
  • 环境变量
// 环境变量是操作系统在运行的时候,记录一些关键性信息,用以辅助系统运行
// env命令即可查看当前系统中记录的环境变量
env
// 环境变量是一种键值对型结构

  • 环境变量:PATH
// 借助环境变量PATH这个项目的值做到无论工作目录是什么都能执行/user/bin/cd这个程序
[mayi@mayi ~]$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/mayi/.local/bin:/home/mayi/bin

  • $符号
// 在Linux系统中,$符号被用于取"变量"的值
echo $PATH
echo ${PATH}ABC

  • 自行设置环境变量
// Linux环境变量可以用户自行设置,其中分为:
// 临时设置
export 变量名=变量值
// 永久生效
// 针对当前用户生效,配置在当前用户的~/.bashrc文件中
// 针对所有用户生效,配置在系统的/etc/profile文件中
// 并通过语法“source 配置文件”,进行立刻生效,或重新登录FinalShell生效

  • 自定义环境变量PATH
// 环境变量PATH这个项目里面记录了系统执行命令的搜索路径
// 这些搜索路径我们也可以自行添加到PATH中去

// 临时修改PATH
export PATH=$PATH:/home/mayi/Desktop/Lesson1
// 永久修改PATH
// 使用vim打开~/.bashrc或者/etc/profile文件,前者是修改用户环境变量,后者是修改系统环境变量
// 系统环境变量只关于root用户,用户环境变量只关于每个用户各自
export PATH=$PATH:/home/mayi/Desktop/Lesson1

11.Linux文件的上传和下载
  • 上传、下载
// FinalShell软件下方窗体提供了文件上传、下载的功能

  • rz、sz命令
// Linux也可以通过rz、sz命令进行文件传输
// 使用sz命令下载文件到桌面(只能下载文件)
sz 文件路径
// 使用rz命令上传文件到工作目录中,会弹出一个窗口用来上传,大文件建议直接拖拽上传
rz

12.压缩和解压
  • 压缩格式
// 市面上有非常多的压缩格式
// zip:Linux、Windows、MacOS
// 7zip:Windows
// rar:Windows
// tar:Linux、MacOS
// gzip:Linux、MacOS

  • tar命令
// .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar文件内,并没有太多的文件体积减少,仅仅是简单的封装。
// .gz,也常见为tar.gz,gzip格式压缩文件,即使用gzip算法压缩文件到一个文件内,可以极大的见到压缩后的体积

// 针对两种格式,使用tar命令均可以进行压缩和解压缩的操作
tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
// -c:创建压缩文件,用于压缩模式
// -v:显示压缩、解压缩过程,用于查看进度
// -x:解压模式
// -f:要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
// -z:gzip模式,不使用-z就是普通的tarball模式
// -C:选择解压的目的地,用于解压模式

// tar压缩命令的常用组合
tar -cvf test.tar 1.txt 2.txt 3.txt
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
// 注意:-z一般处于选项位第一位,-f必须处于选项位最后一位

// tar解压缩命令的常用组合
tar -xvf test.tar
tar -xvf test.tar -C /home/mayi/Desktop/toDesktop
tar -zxvf test.tar.gz -C /home/mayi/Desktop/toDesktop
// 注意:-z一般处于选项位第一位,-f必须处于选项位最后一位,-C选项单独使用,和解压所需的其它参数分开

  • zip命令压缩文件
// 可以使用zip命令,压缩文件为zip压缩包
zip [-r] 参数1 参数2 ... 参数N
// -r:被压缩的包含文件夹的时候,需要使用-r选项

// 示例:
zip test.zip test1.txt test2.txt test3.txt
zip -r test.zip test.zip Desktop test3.txt

  • unzip命令压缩文件
// 使用unzip命令,可以方便的解压zip压缩包
unzip [-d] 压缩包文件
// -d:指定要解压去的位置

// 示例:
unzip test.zip -d /home/mayi/Desktop/toDesktop 

Linux部署附件

windows切换JAVA版本: set JAVA_HOME=C:\Program Files\Java\jdk-17.0.2

1.后台运行java包并重定向日志到log.file
nohup java -jar financePlatform-0.0.1-SNAPSHOT.jar --server.port=8083 > financePlatform.log 2>&1 &
nohup java -jar smart_shift-0.0.7-SNAPSHOT.jar --server.port=8080 > smartshift.log 2>&1 &
jps  查看java进程
/usr/local/nginx/   nginx目录

tar -zxvf file.tar.gz   解压

2.nginx位置
/usr/local/nginx
/conf/nginx.conf  ====>配置文件
/sbin/nginx  启动nginx
/sbin/nginx -s stop 停止nginx
/sbin/nginx -s reload 重启nginx


3.添加命令路径
export PATH="/path/to/your/directory:$PATH"   ====> 添加  /path/to/your/directory到命令路径
source ~/.bashrc            永久保存配置
printenv | grep PATH   查看命令路径 


4.gunicorn
pgrep gunicorn 查看 gunicorn 进程
nohup gunicorn -b 0.0.0.0:8082 wechat:app > log.file 2>&1 &   使用gunicorn后台运行flask等


5.防火墙常用命令
firewall-cmd --list-all     查看开放的端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent   新增开放端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent  #关闭端口
firewall-cmd --reload      重启防火墙
启动防火墙: systemctl start firewalld
关闭防火墙: systemctl stop firewalld
查看防火墙状态: systemctl status firewalld


6.linux可执行文件添加到PATH环境变量
echo $PATH   查看环境变量
#通过修改.bashrc文件:
vim ~/.bashrc
#在最后一行添上:
export PATH="/usr/local/bin:$PATH"
#生效方法:(有以下两种)
#、关闭当前终端窗口,重新打开一个新终端窗口就能生效
#、输入“source ~/.bashrc”命令,立即生效
#有效期限:永久有效
#用户局限:仅对当前用户
添加指令到/usr/bin/java下也可有同样的效果
ln -s /usr/local/java/jdk1.8.0_271/bin/java /usr/bin

lsof -i:22 ## 查看特定端口

7.Hadoop集群:
Hadoop运行端口: 9870
YARN运行端口:8088
启动mysql:sudo service mysql start
export JAVA_HOME=/usr/java/jdk1.8.0_121
Hadoop路径:/www/hadoopServer
mysql路径:
主机名:iZf8z7jz83y7c6wgb5dao3Z

8.安装nginx
sudo yum install libxml2 libxslt-devel
yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel perl-devel perl-ExtUtils-Embed gd-devel
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_xslt_module --add-dynamic-module=../nginx-rtmp-module-master
make
make install