0


Linux 基本使用


一. 初识Linux

1.1 Linux 是什么

** **Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,和 Windows 是 "并列" 的关系.其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

1.2 Linux 发行版

   Linux 严格意义来说只是一个 "操作系统内核";一个完整的操作系统  =  操作系统内核  +  配套的应用程序;由于 Linux 是一个完全开源免费的内核, 因此有些公司/开源组织又基于 Linux 内核,提供了不同的配套程序,这就构成了不同的 "发行版"。

 企业中最主要使用的发行版是 RedHat (红帽)。 但是 RedHat 是一个收费的系统,因此我们使用的是基于红帽系统的的社区免费版本 CentOS。

CentOS 和 RedHat 的关系

   RedHat一直都提供源代码的发行方式,CentOS就是将RedHat发行的源代码去掉 RedHat 的 logo 商标, 重新编译一次。

   RedHat对这种发行版的态度是:“ 我们其实并不反对这种发行版,真正向我们付费的用户,他们重视的并不是系统本身,而是我们所提供的商业服务。”

   所以,CentOS可以得到RedHat的所有功能,甚至是更好的软件。但CentOS并不向用户提供商业支持,当然也不负上任何商业责任。

1.3 关于 Linux 我们学习什么

1) 基础命令

Linux 虽然也有图形化界面, 但是在 服务器 / 嵌入式设备上往往都是通过命令行的方式操作的. 因此学习 Linux 命令就是使用 Linux 的重要基础.

使用命令相比于使用图形界面主要有以下好处:

  • 节省系统资源: 运行图形界面需要让系统付出一些额外的资源开销. 尤其是对于配置比较低的 嵌入式设备, 这一点至关重要;
  • 节省网络带宽: 如果通过网络访问服务器, 使用图形界面需要传输一帧一帧的图像, 而使用命令 只需要传输简单的字符串;
  • 便于批量执行任务: 可以通过一些 "脚本" 代码 (比如 Linux Shell) 来批量执行一些任务, 完成 一些简单的编程工作. (比如定时备份文件, 删除文件等);

Windows 也有命令(也就是 cmd), 只是对于普通用户来说很少使用。

2) 系统编程 & 网络编程

Linux 自身提供了一些 API, 供程序猿调用来完成一些更复杂的编程任务(比如文件操作, 多线程编程, socket 编程等)。

但是由于 Java 跨平台的特性, 这部分功能已经被 Java 自身封装好了 (流对象, Thread 对象, Socket 对象 等). 所以这部分内容我们不必再学习了。

3) 部署 JavaWeb 项目

我们自己写的 web 程序, 要想让其他的用户能够访问, 就需要发布到服务器上; 这是我们接下里重点学习的内容。

小结: 对于 Java 程序猿, 关于 Linux 重点学习 基础命令 和 项目部署 即可。

二. Linux 环境搭建

2.1 环境搭建方式

主要有四种:

  1. 直接安装在物理机上. 但是由于 Linux 桌面使用起来非常不友好. [不推荐].

  2. 使用虚拟机软件, 将 Linux 搭建在虚拟机上. 但是由于当前的虚拟机软件(如 VMWare 之类的)存在一 些 bug , 会导致环境上出现各种莫名其妙的问题, 比较折腾. [非常不推荐]

  3. 使用 WSL (Windows Subsystem for Linux). 这个是 Windows 近几年开发的新功能, 在 Windows 系统内集成了一个 Linux. 但是目前这个技术还不够成熟. [暂时不推荐].

  4. 使用云服务器, 可以直接在腾讯云, 阿里云或华为云 等服务器厂商处直接购买一个云服务器. [墙裂 推荐]

    使用云服务器不仅环境搭建简单, 避免折腾, 同时还有一个最大的好处, 部署在云服务器上的项目可以直接被外网访问到, 这个时候就和一个公司发布一个正式的网站没有任何区别. 也就能让我们自己写的程序真的去给别人去使用。
    

2.2 使用云服务器

我们以腾讯云为例, 其他的服务器厂商也是类似.

  1. 进入官方网站 腾讯云 - 产业智变 云启未来 (tencent.com)

  2. 登陆网站(可以使用 qq 或者 微信 登陆)

  3. 在控制台中找到自己买的服务器

  1. 在服务器中找到公网 IP 地址

红色方框为公网 ip 地址, 稍后我们就会使用这个 ip 登陆服务器。

  1. 设置 root 密码: 勾选服务器, 点击重置密码(这个环节可能需要手机短信验证);root 密码建议设置的稍微复杂一些, 否则容易被黑客入侵。

小结:

在这个环节我们最重要的是得到三个信息:

  1. 服务器的外网 IP
  2. 服务器的管理员账户 (固定为 root)
  3. 管理员账户密码(在腾讯云网站上设置的) 这三个信息是我们登陆到 Linux 上的必要条件;

2.3 使用终端软件连接到 Linux

什么是终端软件

终端软件是一类工具软件, 可以和远程的主机建立网络连接, 从而对主机进行一些操作;

常见的终端软件: XShell,Putty,MobaXTerm,Iterm2,SecureCRT ......

我们使用的是 XShell。

下载 XShell

下载地址:NetSarang Website (xshell.com)

XShell 提供了两种授权方式;

企业版:收费

家庭/教育版:免费

我们选择 家庭/教育 版即可,下载的时候需要填一下名字和邮箱,下载链接会被发送到填写的邮箱中;点击邮箱中的下载链接即可完成下载。

使用 XShell 登陆主机

  1. 在 XShell 终端下输入

ssh 服务器外网ip地址

ip 为腾讯云后台页面中看到的 外网IP;如果网络畅通, 将会提示输入用户名密码,输入即可正确登陆。

  1. 也可以创建会话:

**关于XShell 下的复制粘贴 **

**复制: ctrl + insert (有些同学的 insert 需要配合 fn 来按) **

粘贴: shift + insert

三. Linux 常用命令

1. ls

语法: ls [选项] [目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。

常用选项:

  • -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  • -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
  • -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
  • -l 列出文件的详细信息。
  • -r 对目录反向排序。
  • -t 以时间排序。
  • -R 列出所有子目录下的文件。(递归)

2. pwd

语法: pwd

功能:显示用户当前所在的目录

3. cd

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。

**语法: cd 目录名 **

功能: 改变工作目录,将当前工作目录改变到指定的目录下。

举例:

  • **cd .. : 返回上级目录 **
  • **cd ~ :进入用户家目 **
  • cd - :返回最近访问目录

认识 Linux 目录结构

绝对路径 vs 相对路径

形如: /usr/share/tomcat/logs/ 以根目录开头的, 称为绝对路径.

形如: ./logs 以 . 或者 .. 开头的, 称为相对路径.

使用 tab 键补全

我们敲的所有的 Linux 命令, 都可以使用 tab 键来尝试补全, 加快效率.

使用 ctrl + c 重新输入

如果命令或者目录敲错了, 可以 ctrl + c 取消当前的命令.

4. touch

语法: touch [选项]... 文件...

功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的 文件。

举例:

  • touch test.txt

**5. cat **

语法:cat [选项] [文件]

功能: 查看目标文件的内容

常用选项:

  • -n 对输出的所有行编号
  • cat test.txt

6. mkdir

语法:mkdir [选项] dirname...

功能:在当前目录下创建一个名为 “dirname”的目录

常用选项:

  • -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将 自动建立好那些尚不存在的目录,即一次可以建立多级目录

7. rm

语法:rm [-f-i-r-v] [dirName/dir]

功能:删除文件或目录

常用选项:

  • -f 即使文件属性为只读(即写保护),亦直接删除
  • -i 删除前逐一询问确认
  • -r 删除目录及其下所有文件

** 重要注意事项:** 千万不要运行 rm -rf / , 尤其是在公司的生产服务器上。

8. cp

语法:cp [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在 的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的 目的地并非一个已存在的目录,则会出现错误信息

常用选项:

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录 或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

9. man

Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。

语法: man [选项] 命令

常用选项:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节找
  • man man 能够看到 man 手册中的若干个章节及其含义.

10. less

语法: less [参数] 文件

功能:查看文件内容. 不会立刻把所有文件内容加载到内存中. 也能进行查找.

选项:

  • j k / 方向键: 向上向下滚动屏幕.
  • -N 显示每行的行号
  • /字符串:向下搜索“字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • q: 退出

11. head

**语法:head [参数]... [文件]... **

功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。

选项:

  • -n 显示的行数

**12. tail **

**语法: tail [必要参数] [选择参数] [文件] **

功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

选项:

  • -f 循环读取
  • -n 显示行数

**13. grep **

**语法:grep [参数]... [文件]... **

功能:用于查找文件中是否包含指定字符串, 并显示对应的行.

选项:

  • -n 显示的行数
  • -w 全字匹配. 要求整个单词都完全相同的结果才能匹配出来, 而不仅仅是一个单词的一部分.
  • -r 递归查找. 可以搜索多级目录下的所有文件.
  • --color 高亮查找到的结果
  • --include 指定查找某些文件
  • --exclude 指定排除某些文件

14. ps

语法:ps [参数]...

功能:用于查看当前系统上运行的进程

选项:

  • a 显示一个终端的所有进程
  • u 以用户为主的格式来显示程序状况
  • x 显示所有程序,不以终端机来区分

举例:

ps aux # 显示系统上所有的进程

ps aux | grep "进程名"

ps aux | grep "进程id"

15. netstat

语法:netstat [参数]...

功能:查看系统上的网络状态.

选项:

  • -a 显示所有正在或不在侦听的套接字
  • -n 显示数字形式地址而不是去解析主机、端口或用户名
  • -p 显示套接字所属进程的PID和名称

举例:

netstat -anp

netstat -anp | grep "进程名"

netstat -anp | grep "端口号"

标签: linux

本文转载自: https://blog.csdn.net/Lucky_mzc/article/details/125632304
版权归原作者 Ombré_mi 所有, 如有侵权,请联系我们删除。

“Linux 基本使用”的评论:

还没有评论