Linux 简介
- Linux 是一种自由和开放源码的类 UNIX 操作系统。Linux 英文解释为 Linux is not Unix。
- Linux 是在 1991 由林纳斯·托瓦兹在赫尔辛基大学上学时创立的,主要受到 Minix 和 Unix 思想的启发。
- Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
- Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
- Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 应用领域
- 今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,
- 通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。
- 目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
Linux系统目录
linux中常用的命令
pwd
- 查看当前所在位置
- lhz@lhz-PC:~/Desktop$:用户lhz登录lhz-deepin这台主机上
- ~代表当前位置处于当前用户主目录或者称之为当前用户家目录
ls
- 查看或者显示
- ls -l 以列表方式显示当前目录下的目录和文件的相关信息
- ls -a 显示所有目录和文件包含隐藏的 在linux中不论是目录还是文件前缀加点代表隐藏
- ls -al 多个参数可以联合使用
clear
clear 清屏
ctrl + l 清屏
ctrl + u 清空当前行内容
cd
change directory 目录切换
绝对路径与相对路径
相对路径参数:
./ 当前目录 在当前目录./可以省略
../ 父级目录
- 返回上一级目录 从哪儿来回哪儿去
~ 返回当前用户主目录
mkdir
#make directory 创建目录
mkdir /home/lhz/aa
# 可以同时创建多个目录
mkdir /home/lhz/aa/a1 mkdir /home/lhz/aa/a2
# 递归创建 -p
mkdir -p /home/lhz/a/a1 /home/lhz/a/a2 /home/lhz/b/b1 /home/lhz/b/b2
rmdir
rmdir
只能删除空的目录,否则会删除失败
# remove directory 删除空目录
rmdir /home/lhz/a/a1
rmdir /home/lhz/b/b1 /home/lhz/b/b2
rmdir /home/lhz/b
rmdir /home/lhz/a
touch
创建空文件
rm
touch b c
rm b
rm -f c
mkdir -p a/a1 a/a2
rm a
# rm: 无法删除'a': 是一个目录
rm -rf a
cp
- copy 拷贝
- cp 源文件路径 目标文件路径
- -v 显示拷贝过程
- -r 递归复制目录及其子目录内的所有内容
mkdir a b
touch a/a.txt
cp a/a.txt b
# 目标文件与源文件同名 注意 如果存在目标文件存在同名文件则覆盖目标同名文件
cp -f a/a.txt b
cp a/a.txt b/b.txt
mv
- move 移动
- 实现类似 剪切和重命名的效果
- 当源文件和目标文件在同一目录下 表现效果如同重命名
cp -r opt/maven/ ~/
mv ~/maven/ ~/Documents/
mv ~/Documents/maven/ ~/Documents/mvn
重定向
echo "我爱你中国"
echo "我爱你中国" > love.txt
echo "亲爱的母亲" > love.txt
echo "" > love.txt
echo "我爱你中国" > love.txt
echo "亲爱的母亲" >> love.txt
vi/vim
vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是**命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:
命令模式
- 用户刚刚启动 vi/vim,便进入了命令模式。
- 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
- 以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- 切换到底线命令模式,以在最底一行输入命令。
- 若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
- 命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
编辑模式|输入模式
- 在命令模式下按下i就进入了输入模式。
- 在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
末行模式|底线命令模式
- 在命令模式下按下:(英文冒号)就进入了底线命令模式。
- 底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
- 在底线命令模式中,基本的命令有(已经省略了冒号):
-
q 退出程序
-
w 保存文件
- 按ESC键可随时退出底线命令模式。
tar :解压缩
tar -cvf aa.tar a.txt b.txt
tar -tvf aa.tar
tar -rvf aa.tar c.txt
rm -f *.txt
tar -xvf aa.tar
tar -zcvf aa.tar.gz a.txt b.txt c.txt
rm -f *.txt
tar -zxvf aa.tar.gz
tar -jxvf FileZilla_3.58.0_i686-linux-gnu.tar.bz2 -C /home/lhz/opt
网络管理
ifconfig
ifconfig
sudo ifconfig ens33 down #开启
sudo ifconfig ens33 up #关闭
ip address
ip address 192.168.1.1 #设置ip地址
Linux 查看端口占用情况
- Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。
lsof
- lsof(list open files)是一个列出当前系统打开文件的工具。
- lsof 查看端口占用语法格式:
lsof -i:端口号
多 lsof 的命令如下:
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
netstat
- netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
软件安装
二进制安装包
- deb debain package
sudo dpkg -i wps-office_11.1.0.10920_amd64.deb
- dpkg -I 查看安装包相信信息
- dpkg -c 查看安装安装后的位置
- 选择 dpkg -l来查看软件的状态。选择 dpkg -P来卸载软件。
- 因为dpkg --remove只是删除安装的文件,但不删除配置文件。
- 而dpkg --purge则安装文件和配置文件都删除。
包管理器安装
- yum
- apt
- yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
- 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
- apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- apt 命令执行需要超级管理员权限(root)。
yum常用命令
- 列出所有可更新的软件清单命令:yum check-update
- 更新所有软件命令:yum update
- 仅安装指定的软件命令:yum install <package_name>
- 仅更新指定的软件命令:yum update <package_name>
- 列出所有可安裝的软件清单命令:yum list
- 删除软件包命令:yum remove <package_name>
- 查找软件包命令:yum search <keyword>
- 清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
apt 常用命令
- 列出所有可更新的软件清单命令:sudo apt update
- 升级软件包:sudo apt upgrade
- 列出可更新的软件包及版本信息:apt list --upgradeable
- 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
- 安装指定的软件命令:sudo apt install <package_name>
- 安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
- 更新指定的软件命令:sudo apt update <package_name>
- 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
- 删除软件包命令:sudo apt remove <package_name>
- 清理不再使用的依赖和库文件: sudo apt autoremove
- 移除软件包及配置文件: sudo apt purge <package_name>
- 查找软件包命令: sudo apt search <keyword>
- 列出所有已安装的包:apt list --installed
- 列出所有已安装的包的版本信息:apt list --all-versions
sudo apt -y install apache2
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
sudo systemctl enable apache2
sudo systemctl disable apache2
编译后的二进制文件
https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz #下载压缩包
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /home/lhz/opt #解压缩
cd /home/lhz/opt #进入目录
mv jdk-17.0.2 jdk-17 #改名字
deepin-editor /home/lhz/.bashrc #用图形化界面配置变量
变量
export JAVA_HOME=/home/lhz/opt/jdk-17
export PATH=$PATH:$JAVA_HOME/bin
export M2_HOME=/home/lhz/opt/maven
export PATH=$PATH:$M2_HOME/bin
源代码编译安装
下载并编译安装
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -zxvf nginx-1.20.2.tar.gz
cd nginx-1.20.2
sudo groupadd nginx
sudo useradd nginx -g nginx -s /sbin/nologin -M
sudo ./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_stub_status_module --with-http_ssl_module \
--with-http_realip_module --with-http_gzip_static_module \
--with-file-aio --with-http_realip_module
echo $?
sudo make -j4
echo $?
sudo make -j4 install
sudo /usr/local/nginx/sbin/nginx -v
sudo /usr/local/nginx/sbin/nginx -t
# 启动nginx
sudo /usr/local/nginx/sbin/nginx
# 重新载入配置文件
sudo /usr/local/nginx/sbin/nginx -s reload
# 快速关闭 Nginx
sudo /usr/local/nginx/sbin/nginx -s stop
# 关闭Nginx
sudo /usr/local/nginx/sbin/nginx -s quit
!!需要注意一点:如果之前开启过apache2服务器,则需要关闭此服务器,否则apache2会与nginx冲突,导致nginx无法正常访问
编写启动脚本
cd /usr/lib/systemd/system/
sudo vim nginx.service
[Unit]
Description=nginx
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重新加载服务文件
sudo systemctl daemon-reload
systemctl start|stop|reload|restart|status nginx.service
# 开机自启:
sudo systemctl enable nginx.service
# 关闭开机自启:
sudo systemctl disable nginx.service