Linux
如何连接到 Linux 机器?
使用 SSH 协议来建立远程连接,我通常使用 mac 系统,系统已经内置了 SSH 客户端
使用用户名和密钥进行连接,在终端输入用户名和密钥
在第一次连接,会收到一个安全警告,确认后,将建立连接
假设 SSH 由于某种原因无法工作。 您将如何解决该问题?
- 网络层面:通过 ping 命令命令,检查 client 端和 server 端的网络联通是否正常。网络正常的情况下,再进行客户端以及服务器端的排查
- 客户端:
- telnet 服务器 22 号端口,以便确定 SSH 服务器服务是否正常
- SSH 服务器服务正常,登录命令中加上 -vvv 参数,以便获取登录得更多详细日志
- 日志中根据不同的报错类型来进一步解决。如:
- User key not recognized by server:检查登陆的用户名是否正确
- Permission denied or connection closed by port 22:检查 keypair 的权限是否正确
- 服务器端:如果能用其他的方式登录客户端,首先使用 netstat 命令查看 SSH 服务器是否启动成功,并查看监听端口是否是默认的 22. 再查看/var/log/secure 中的登录报错,根据报错做进一步排查
SSH 的默认端口是什么?
默认端口是 22,如果需要连接非默认端口的 SSH 服务器,可以通过使用 ssh -p 指定
你 ping 时,你会得到回应吗? 这意味着什么?
- 如果得到回应,代表能够和目标主机进行通信
- 如果没有回应,可能目标主机已经关闭,或者本地网络有问题,也可能是目标主机上的防火墙组织了 ping 请求
当您使用 ping 时,它只检查网络连接还是检查特定端口上的连接?
- ping 命令通常只检查网络连接的可达性,而不检查特定端口上的连接
- ping 命令会发送一个 ICMP Echo Request 消息到目标主机,然后如果目标主机在线,并且可达,将会回应一个 ICMP Echo Reply 消息,这个过程涉及 TCP、UDP 端口,是在网络层进行的
- 如果想检查特定端口上的连接,可以使用 telnet 命令 telnet google.com 8080 或者 netcat 命令 nc -zv example.com 22
top 命令输出中,CPU 指标项%wa 接近 100%,这种问题如何排查原因?
从两方面来分析,一是哪个磁盘有问题,二是哪个进程有问题:
a. 磁盘方面:使用 iostat 命令查看磁盘指标,重点关注 await(平均每次设备 I/O 操作的等待时间 )和 svctm(平均每次设备 I/O 操作的服务时间)这两个指标。指标高的说明磁盘存在性能问题
b. Iotop 命令可以查看系统当前使用 io 高的进程
软链接和硬链接的区别?
- Inode:软链接不同,硬链接相同
- 删除文件:软链接有影响,硬链接不会有影响
- 跨文件系统:软链接可以,硬链接不可以
- 对目录进行创建:软链接可以。硬链接不可以,原因是目录还有对自己的引用,创建会造成死循环
- 创建方式不同:软链接 命令为 ln -s; 硬链接 命令为 ln
Linux 系统级别
- 运行级别 0:关机级别。在这个级别下,系统会被关闭,并停止所有服务
- 运行级别 1:单用户级别。这是维护模式,只有一个超级用户(root)可以登录。用于系统维护和修复
- 运行级别 2:多用户级别,没有 NFS。在这个级别下,系统支持多用户登录,但没有网络文件系统(NFS)支持
- 运行级别 3:多用户级别,有网络支持。这是一个完全多用户模式,支持网络连接
- 运行级别 4:未定义级别。通常不用于标准 Linux 系统
- 运行级别 5:多用户级别,图形用户界面(GUI)。在这个级别下,系统支持图形用户界面,通常使用 X Window System
- 运行级别 6:重新启动级别。在这个级别下,系统会重新启动
怎么部署到 Linux 上
本地打一个 JAR 包,使用 SCP 上传 JAR 文件到 Linux 服务器
通过 SSH(Secure Shell)协议登录到 Linux 服务器
使用 java -jar 命令运行 JAR 文件
Linux 安装软件
sudo apt-get install package_name
apt-get update
命令的作用是更新本地包列表,升级系统中已安装的软件包到其最新版本
Linux 启动过程
- BIOS/UEFI 阶段:
- 计算机通电后,首先启动 BIOS(基本输入/输出系统)或 UEFI(统一扩展固件接口)
- BIOS/UEFI 执行 POST(电源自检)以检查硬件是否正常。它还初始化硬件并为后续引导提供引导设备信息。
- 引导加载程序阶段:
- BIOS/UEFI 识别并加载引导加载程序,通常位于硬盘的 MBR(主引导记录)或 UEFI 系统分区中。
- 内核引导阶段:
- 引导加载程序加载 Linux 内核,通常位于/boot 目录中。
- 内核初始化系统硬件,创建第一个用户空间进程(init 进程),并将控制转移给 init。
- init 系统/系统 D 阶段:
- 使用 Systemd 作为 init 系统,它负责启动和管理所有系统服务,从初始化过程到运行级别切换。
- 用户空间进程启动后,Linux 系统通过图形登录管理器(如 GDM、LightDM)或命令行登录提示(TTY)等方式等待用户登录