Linux大事记

Info

Linux入门

概念

Linux系统分为内核和发行版

  • Linux内核:作者也是Git的作者
  • Linux发行版:(基于内核,添加了可视化界面和其他特性,大多收费)
    • 国内:CentOS7占主流
    • 国外:Unbtu占主流
    • 其它发行版:红帽等

内核版本和发行版的版本并不相同,如下命令查看系统信息:Linux内核版本/操作系统centos的发行版本:
image-20230115224150658

Linux系统目录层次:

image-20230115193117438

常备工具

Quote

事实上现在很多SSH终端可视化工具,像文件上传、目录查看都可以很直观很方便了。但在一些特殊的场景中还是有很大用处的。

  • 上传:yum install lrzsz
    • 通过rz命令上传文件
  • 树形结构查看目录:yum install tree
    • 通过tree命令查看当前目录结构
  • 下载文件:yum install wget
    • wget 下载地址

Linux命令

命令技巧

  • Tab键自动补全
  • 连续两次Tab,给出操作提示
  • 使用上下箭头快速调出曾经使用过的命令
  • 使用clear命令或Ctrl+l快捷键实现清屏
  • 使用Ctrl+C快捷键实现退出
  • 若命令太长,可使用\换行分隔
    image-20230117210002918

命令格式

Tip
  • []代表可选
  • 命令名、选项、参数之间有空格进行分隔
command [-options] [parameter]
  • command:目命令名
  • [-options]:选项,可以对命令进行控制,也可以省略
  • [parameter]:传给命令的参数,可以是零个、一个或者多个

常用命令

1、基础命令

ls、pwd、cd、touch、mkdir、rm

image-20230115221332275

2、文件目录操作命令

1)ls:显示指定目录下的内容

image-20230115203423189

1)cd:切换工作目录

image-20230115203307019

3)cat:显示文件内容

image-20230115203611606

4)more:以分页的形式显示文件内容

image-20230115204000520

5)tail:查看文件末尾的内容

image-20230115204155736

6)mkdir:创建目录

image-20230115204445192

7)rmdir:删除空目录

image-20230115204524553

8)rm:删除文件或者目录

image-20230115204707891

3、拷贝移动目录

1)cp:用于复制文件或目录

image-20230115204957438

2)mv:为文件或目录改名、或将文件或目录移动到其他位置

根据输入的参数自行判断执行的是改名还是移动——>可以理解为"强大的改名逻辑"

image-20230115205539026

4、打包压缩命令tar

image-20230115214707364

常用组合选项

  • tar -cvf <archive.tar> <files>:创建 tar 归档文件。
  • tar -xvf <archive.tar>:解压 tar 归档文件。

5、文本编辑命令

Linux下系统主要是VI、VIM命令进行文本编辑,相当于window系统的文本编辑器。VI和VIM的功能命令用法基本相同,只是VIM对反色等方面进行了优化。

VI基本都有,但部分Linux系统是不自带VIM编辑器的

安装VIM

yum install vim

基本使用

Shift+G:快速定位到文件末尾

VIM编辑器分三种模式:底行模式《——命令模式——》插入模式,通过命令模式进行中转

image-20230115220416019

image-20230115220338934

底行模式有两种方式:

  • /:文件内容查找
  • :wqq!set nu

image-20230115215543618

6、查找命令

1)find:在指定目录下查找文件

image-20230115220551493

2)grep:从指定文件中查找指定的文本内容

image-20230115220720918

3)查看进程+

image-20230116101236965

查看已知端口的占用情况:netstat -anp | grep 8080或`netstat -tln | grep
不指定就是查看全部端口的占用情况
和anp命令对比,tln少了“2597932/java”,这个显示的是进程号以及被哪个程序所占用。

7、进程相关

  • 获取当前运行指定进程的进程id,ps -ef |grep 特定进程
  • 杀掉进程(-9强制关闭):kill -9 进程id

8、软件相关

Note

Linux系统安装软件的方式,包管理器是最方便的(自动解决依赖问题),但有时候有些软甲可能并未提供或者说你自己编写的软件肯定要你自己编译。具体可参考后文:Linux > 软件安装

包管理器(Package Manager):大多数Linux发行版都提供了自己的包管理器来管理软件的安装、更新和卸载。常见的包管理器有:

  • APT(Advanced Package Tool):用于Debian、Ubuntu等基于Debian的发行版。
  • YUM(Yellowdog Updater, Modified)DNF(Dandified YUM):用于Fedora、CentOS等基于Red Hat的发行版。
  • Pacman:用于Arch Linux及其衍生版。
  • Zypper:用于openSUSE等发行版。 使用包管理器安装软件通常是最简单和推荐的方法,可以通过命令行或图形界面进行操作。

使用yum安装软件为例:

  • 查看yum服务提供商云端可用的软件版本:yun list 软件名
  • 使用yum进行安装yum install 软件包名

其他方式(原始方式):

  1. 源代码编译:有时你可能需要从源代码编译软件,这通常需要一些开发工具和依赖项。通常的步骤包括下载源代码、解压缩、配置、编译和安装。这种方法在你需要定制编译选项或使用最新的开发版本时很有用。
  2. 二进制安装包:有些软件提供了预编译的二进制安装包,你可以直接下载并安装。这些安装包通常以特定的格式提供,如.deb、.rpm、.tar.gz等。你可以通过命令行或者双击安装包进行安装。
  3. 手动安装:在某些情况下,你可能需要手动安装软件。这通常涉及将程序文件复制到系统中的适当位置,并设置正确的权限和环境变量。

9、项目部署相关

  • 后台启动,而不是控制台霸屏启动:nohup——no hang up(不要挂起)
  • 输出日志文件:> 文件路径名

语法格式:nohup Command [Arg...][&]

例如:后台运行Java -jar命令,并将日志输出到hello.log文件

nohup java -jar boot工程.jar &>hello.log &

10、权限相关

Linux文件权限

image-20230116153413546

命令授权

image-20230116153317589

在Linux中,常用的文件权限授权命令主要是chmodchown。以下是它们的简要说明:

  1. chmod命令:用于修改文件或目录的权限。

    基本语法:

    chmod [选项] 模式 文件名
    
    • 模式:可以用数字表示(例如,777)或符号表示(例如,u+x)来指定权限。
    • 文件名:要修改权限的文件或目录名。

    常用选项:

    • -R:递归地修改目录及其子目录下的文件权限。
    • -v:显示操作的详细信息。

    示例:

    chmod 755 file.txt   # 将file.txt的权限设置为-rwxr-xr-x
    chmod u+x file.txt   # 添加file.txt的所有者(用户)的执行权限
    chmod -R 644 dir/    # 递归修改目录dir及其子目录下的所有文件权限为-rw-r--r--
    
  2. chown命令:用于修改文件或目录的所有者和所属组。

    基本语法:

    chown [选项] 用户名:组名 文件名
    
    • 用户名:新的所有者用户名。
    • 组名:新的所属组名。
    • 文件名:要修改所有者和所属组的文件或目录名。

    常用选项:

    • -R:递归地修改目录及其子目录下的所有文件的所有者和所属组。

    示例:

    chown user1:group1 file.txt   # 将file.txt的所有者修改为user1,所属组修改为group1
    chown -R user1:group1 dir/    # 递归修改目录dir及其子目录下的所有文件的所有者和所属组
    

高级Shell命令

通过Shell语言自动化函数执行脚本,比如echo、sed等命令

环境变量

Linux系统中的环境变量可以通过很多途径进行配置,其中包括:

  1. /etc/profile 全局配置文件
  2. /etc/environment 全局环境配置文件
  3. ~/.bashrc 用户级配置文件
  4. ~/.bash_profile~/.profile 用户级配置文件
  5. 命令行中使用 export 命令

对于全局环境变量的配置,建议使用 /etc/environment 文件进行配置。在该文件中,可以使用 key=value 的形式设置全局环境变量。例如:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

对于用户级别的配置,可以使用 ~/.bashrc~/.bash_profile 或者 ~/.profile 文件进行配置。其中,~/.bashrc 文件通常用于每次启动新的命令行会话时都要执行的操作,例如一些命令别名、PS1 等配置。而 ~/.bash_profile 或者 ~/.profile 文件通常用于在用户登录系统时执行的操作,例如 PATH 环境变量、umask 配置等。

具体步骤,配置环境变量以用户级为例:

  • 检查修改修改的 ~/.bashrc 文件,可以使用vim等编辑器打开,这是一个脚本文件里面可以编写函数动态赋值
  • 在文件中通过添加export PATH="/home/cy/dev-tools/anaconda3/bin:$PATH的方式导出追加环境变量,修改后保存退出
  • 确保执行了 source ~/.bashrc 命令来刷新 Shell 环境
  • 运行 echo $PATH 命令输出所有环境变量来验证是否添加成功
    • 针对单独软件可以采取which conda的方式来查看对应的软件环境目录配置
  • 另外也可以在命令行终端直接使用export函数命令临时添加环境变量

关于权限

在 Linux 中,有一个称为 root的超级用户。这是超级管理员账号,它可以做任何事以及使用系统的一切东西。它可以在你的 Linux 系统上访问任何文件和运行任何命令。

能力越大,责任越大。root 用户给予你完全控制系统的能力,因此,它应该被谨慎地使用。root 用户可以访问系统文件,运行更改系统配置的命令。因此,一个错误的命令可能会破坏系统。

这就是为什么 Ubuntu 和其它基于 Ubuntu 的发行版默认锁定 root 用户,以从意外的灾难中挽救你的原因。

所以从安全角度上说一般常态使用普通用户操作home等目录和文件,特殊情况临时sudo申请权限(很麻烦),还可以模拟申请一个root账户登录,但这其实还是很麻烦。必要时我们可以开启root用户。

如果出于某些原因,你决定启用 root 用户,你可以通过为其设置一个密码来做到:

sudo passwd root

再强调一次,不建议使用 root 用户,并且我也不鼓励你在桌面上这样做。如果你忘记了密码,你将不能再次在 Ubuntu 中更改 root 用户密码。(LCTT 译注:可以通过单用户模式修改。)

你可以通过移除密码来再次锁定 root 用户:

sudo passwd -dl root

通过su root命令即可切换到root用户执行命令

软件安装

image-20230116095348910

1、安装JDK(二进制)

  • 使用xshell、xftp或finalShell上传JDK压缩包并解压至Linux的配置目录/usr/local

  • 配置环境变量,修改/etc/profile,在文件末尾追加如下配置

    JAVA_HOME=/usr/local/jdk1.8.0_171
    PATH=$JAVA_HOME/bin:$PATH
    // :$PATH 表示将前面定义的路径追加到PATH变量中
    
  • 执行source /etc/profile重新加载配置文件使配置文件生效

  • 执行java -version检查

2、安装Tomcat(二进制)

image-20230116100949018

方式相同,都是二进制打包文件解压安装

启动后,查看日志或者查看进程检查是否启动成功

image-20230116101148512

关闭tomcat:sh shutdown.sh或./shutdown.sh

防火墙开放端口

云服务器一般实例里边内部防火墙是关闭的,需要在控制台上开启对应的端口。当然实例内部也可以开启防火墙进行更强的控制

image-20230116101630500

3、安装MYSQL(rpm)

先检测是否存在以及是否有冲突软件比如mariadb,

image-20230116104412739

有则先卸载

image-20230116104456649

解压安装

image-20230116104557084

rpm安装,自行解决依赖问题,按依赖顺序逆向安装

image-20230116110131259

启动mysql服务

image-20230116112706702

查看临时密码和设置密码

image-20230116112820899

image-20230116112859036

Tip:

  • 可以创建一个本地管理员,在创建一个可以允许任何地方访问的账号,再为这个用户赋予权限
  • 设置编码为utf-8

使用Navacat登录测试

4、安装lrzsz(yum)

lrzsz,辅助文件上传

输入rz即可上传文件(云服务器基本自带)

image-20230116123410405

安装步骤:

image-20230116123141162

交互技巧

比如将安装程序需要的所有命令都写进一个sh脚本文件之中,执行改脚本交互式完成安装。比如conda。

另外像这种安装过程其中必然会出现写许可条款,很长会出现more hidden

终端无法一次性显示全部内容。这是一个分页显示的情况,您可以使用以下方法来查看完整内容:

  1. 使用空格键: 按下空格键来查看文件的下一页内容。连续按下空格键可以逐页查看。
  2. 使用 Enter 键: 按下 Enter 键来查看文件的下一行内容。
  3. 使用 q 键: 如果您想要退出分页查看,可以按下 q 键。
  4. 使用箭头键: 使用上箭头和下箭头键来在内容的上一页和下一页之间切换。

如果您只是想快速浏览文件的内容,您可以按下空格键来逐页查看。如果需要细致查看或查找特定内容,您可以使用箭头键来控制页面的滚动。

另外,如果您在创建环境时不需要查看环境文件的内容,您可以简单地添加 -q--quiet 参数来禁止显示详细信息。

项目部署

手工部署参照基本的部署命令,下面是Shell脚本自动部署——>拉去代码,编译、打包、启动

image-20230116145331991

  • yum install git

  • 上传、解压maven安装包——>配置环境变量——>设置本地仓库和中央仓库

    image-20230116152729810

  • 执行shell脚本,若无权限则参照权限相关命令进行授权——>chomod 777 需授权的文件
    image-20230116153108599