Linux 操作系统概述

本文介绍了使用 ssh 进行 Linux 系统服务区的远程访问与一些简单的命令。服务器可以去往各大服务器商购买,或者在本地安装虚拟机,针对 mac 用户 Linux 操作系统的指令大多可以直接使用,windows 系统的 wsl 或 powershell 也满足 Linux 的习惯。

1 Linux 的远程访问 ssh

1.1 本地生成 ssh 密钥

在本地用户目录 ~ 下终端输入

1
ssh-keygen

会要求设置密码,可以设置也可以不设置,这个密码只是未来使用 ssh 连接时需要输入的。

便会在用户目录下生成文件夹和文件

1
2
3
.ssh
├── id_rsa
└── id_rsa.pub

其中 id_rsa 为私钥,不可泄漏;id_rsa.pub 为公钥,未来将放置在其他主机上的。

1.2 服务器存储公钥

在需要登陆的服务器用户目录下创建文件夹和文件

1
2
.ssh
└── authorized_keys

将本地主机的公钥 id_rsa.pub 内容复制到远程服务器 .ssh/authorized_keys 文件中。

1.3 登陆远程服务器

此时就可以通过 ssh 建立安全的访问。

  • 方式一:直接输入远程的 ip 地址

在本地主机终端输入

1
ssh@<ip地址>

之后即可通过 ssh 登陆。但相对复杂,推荐使用本地配置登陆。

  • 方式二:自定义配置文件 config

在本地主机的 ~/.ssh/ 目录下创建配置文件 config.ssh/ 目录结构:

1
2
3
4
.ssh
├── config
├── id_rsa
└── id_rsa.pub

config 文件中写入配置

1
2
3
4
5
6
7
# config 文件,以阿里云服务器为例

# Aliyun Server
Host <别名>
HostName <公网ip>
User root
Port 22

# 表示注释,Host 后的可以自定义别名,Hostname 后填入服务器的 ip 地址,User 表示想要登陆的远程服务器用户,例如 root 表示直接登陆到管理员用户,Port 22 表示通过端口 22 连接。

以上配置完成后,直接在终端输入

1
ssh <别名>

即可登陆。

1.4 known_hosts 文件

有时,当远端服务器也使用了 ssh-keygen 产生密钥时,本地 .ssh/ 目录下会有 known_hosts 文件,其保存了远方 ssh 服务器的公钥,确认是否是之前连接的服务器。

1.5 文件传输 ssh + cat 或 scp

当按照上面配置完成了 ssh 和远程服务器别名后,可以进行快捷的文件传输。

  • 对于小文件,可以直接使用 cat + ssh 的方式
1
cat ~/a.txt | ssh <别名> 'cat > /root/file.txt'

将本地 ~/a.txt 文件复制传输到远程服务器 <别名>/root/file.txt 文件。

  • 对于大文件,可以使用 scp 递归传输文件夹
1
scp -r ~/localFile <别名>:/root

将本地的 ~/localFile 文件夹传输到远程服务器 <别名>/root 路径下。

2 Linux 的简单使用

2.1 登录后的信息

每次登陆 Linux 系统后,会显示 motd (Message of the day) 以及上次登陆的时间和地点。

  • last 命令查看当前或指定用户以前的成功登录情况,来源于 /var/log/wtmp

2.2 注销

退出 Linux 操作系统的文本终端,可以使用:

  • logout
  • exit
  • 组合 Ctrl + D 退出,代表 EOF (End Of File)

如果不希望按下组合键一次就退出,可以设置 IGNOREEOF ,以免误触

1
echo IGNOREEOF=3 >> ~/.bashrc

如此,就需要按压 3 次 Ctrl + D 才能退出。如果只按一次,则会出现以下情况:

1
2
root@<name>:~# 
Use "logout" to leave the shell.

或者进入用户目录的 .bashrc 文件添加一行

1
2
# 进入 .bashrc 文件,输入 I 进入编辑模式
vim .bashrc
1
2
# .bashrc 文件,添加一行
IGNOREEOF=3

键入 esc 退出编辑模式,输入 :wq 保存并退出。然后在终端输入以下指令以永久生效:

1
source .bashrc

2.3 关机和重启

在命令行可通过【不推荐】

  • poweroff 立刻关机并断电
  • halt 立刻关机
  • reboot 立刻重启

【推荐】使用 shutdown 命令指定时间进行关机。

1
shutdown [OPTIONS...] [TIME] [WALL...]
  • [TIME] 填入命令执行的时间:例如 +mm 表示 m 分钟后执行;now 表示立马执行;不指定则默认 1 分钟后执行。或者采用 hh:mm 表示在 hh 时 mm 分时刻执行。
  • WALL... 要发送的消息,可不传递。
  • [OPTIONS...] 可项的参数
1
2
3
4
5
6
7
8
9
10
11
1. 查看 shutdown 的帮助信息
--help

2. 关机(默认,可省略)
-P 或 -h 或 --poweroff

3. 重启
-r 或 --reboot

4. 取消前面的命令
-c

例如:

1
2
3
4
5
6
7
8
shutdown -r 10  		# 十分钟后重启
Reboot scheduled for Mon 2025-03-03 14:08:42 CST, use 'shutdown -c' to cancel.
shutdown -c # 取消操作

shutdown # 默认 1 分钟后关机并断电
shutdown -c # 取消操作

shutdown -r now # 立即重启

2.4 查看系统信息

  • hostname :查看主机的名字(主机名存储在文件 /etc/hostname 中)
1
2
root@<主机名>:~# hostname
<主机名>
  • uname :可以查看更多的系统信息
1
2
3
4
5
6
7
-a  : 显示所有信息
-s : 内核名,例如 Linux 或 Darwin (MacOS)
-r : 内核发行版本号
-n : 节点名
-v : 内核版本
-m : 主机硬件架构
-o : 操作系统,结果为 GNU/Linux 等

  • lsb_release :查看 LSB (Linux Standard Base) 一些 Linux 版本信息
1
2
3
4
5
6
-a  : 查看所有信息 
-i : 查看发行者 ID
-d : 发行版描述
-r : 发行版发行号
-c : 发行版代号
-s : 短格式,不包括前面的头部部分

2.5 查看用户信息

  • whoami :登录用户名
  • id :查看当前用户(也可查看其他用户)的用户和组信息
  • who :查看当前系统正在登录的用户信息
  • uptime :查看系统运行时间和负载等信息
  • wuptimewho 结合的功能,还可查看用户在做什么
  • tty :查看当前所连接的终端设备文件

2.6 阅读文本文件

  • cat :阅读文本文件,不分页
  • more :阅读文本文件,分页
  • less :与 more 相似,但功能更多
1
2
3
4
5
6
7
8
9
10
11
12
13
14
less <file>

-- 显示一页内容,然后等待用户的输入 --
h : 显示帮助
q : 退出
<Space> or f : 查看下一页
b : 查看上一页
/xxx : 向前搜索 xxx
n : 重复上次搜索(方向不变)
?xxx : 向后搜索 xxx
N : 重复上次搜索,但是反方向
:n : 切换到下一个文件
:p : 切换到前一个文件
v : 采用相应的编辑器来编辑本文件

2.7 文件编辑

例如:vimnano

使用 nanoMeta 键一般为 Alt 键)

  • Ctrl + O 保存
  • Ctrl + X 退出,如有修改,会询问是否保存
  • Ctrl + G 查看帮助
  • Shift + <- or -> 使用 Shift 加键盘向左/右,可以选定一段文字
  • Ctrl + K 剪切
  • Ctrl + U 粘贴
  • Ctrl + W 搜索文本
  • Meta + 6 复制
  • Meta + U 撤销上次操作
  • Meta + E 恢复上次撤销的操作