Linux——一些常用的其他命令
文章目录
- 前言
- 一、 date(重点)
- 1.1 date功能
- 1.2 date详细案例
- 二、cal
- 2.1 cal功能
- 2.2 cal详细案例
- 三、history(重点)
- 3.1 history功能
- 3.2 history详细案例
- 四、scp
- 4.1 scp功能
- 4.2 scp详细案例
- 五、rsync
- 5.1 rsync功能
- 5.2 rsync详细案例
- 六、ssh
- 6.1 ssh功能
- 6.2 ssh详细案例
- 6.3 可能遇到的问题
- 6.3.1 ssh: connect to host 192.168.10.123 port 2222: Connection refused
- 七、nohup
- 7.1 nohup功能
- 7.2 nohup详细案例
- 八 reboot
- 8.1 reboot功能
- 8.2 reboot详细案例
- 九、shutdown
- 9.1 shutdown功能
- 9.2 shutdown详细案例
- 十、free命令
- 10.1 free命令功能
- 10.2 free基本命令格式
- 10.3 free基本用法
- 10.4 free输出字段解释
- 10.5 free典型应用场景
- 10.6 free高级技巧
- 10.7 free总结
- 总结
前言
Linux 系统以其强大的命令行工具而闻名,掌握这些工具不仅能提高工作效率,还能帮助用户更深入地理解系统的工作原理。本文档详细介绍了 Linux 中一些常用命令的功能、用法及实际案例,包括 date
、cal
、history
、scp
、rsync
、ssh
、nohup
、reboot
、shutdown
和 free
等。这些命令涵盖了时间管理、日历查看、历史命令检索、文件传输、远程连接、后台任务管理、系统重启与关闭以及内存监控等多个方面。
无论您是 Linux 初学者还是有一定经验的用户,本文档都能为您提供实用的参考。通过具体的示例和详细的解释,您将能够快速掌握这些命令的使用技巧,并在实际工作中灵活运用。希望本文档能成为您学习 Linux 命令的得力助手!
一、 date(重点)
1.1 date功能
date
命令用于显示当前的系统日期和时间,可以指定不同的输出格式,或用它来设置系统的日期和时间。
1.2 date详细案例
- 显示当前系统时间:
date
输出:2025年 08月 16日 星期六 16:26:18 CST
- 自定义时间格式:
date "+%Y-%m-%d %H:%M:%S"
输出:2025-08-16 16:28:43
- 显示当前时间的时间戳(从1970年1月1日以来的秒数):
date +%s
输出:1692017091
- 设置系统时间:
date +%Y-%m-%d -s "2025-08-15"
这会将系统日期设置为 2025年8月15日
。
- 可以使用
ntpdate ntp.aliyun.com
恢复系统时间
二、cal
2.1 cal功能
cal
命令用来显示当前月份或指定月份的日历。可以方便地查看日期。
2.2 cal详细案例
- 查看当前月份的日历:
cal
输出(假设当前为2025年8月):
August 2025Su Mo Tu We Th Fr Sa1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 3031
- 查看指定年份和月份的日历:
cal 12 2025
输出:查看2025年12月的日历。
- 显示一整年的日历:
cal -y 2025
输出:显示2025年全年日历。
三、history(重点)
3.1 history功能
history
命令用来查看当前用户的历史命令。这个命令可以帮助你快速找到之前运行的命令。
3.2 history详细案例
- 查看命令历史:
history
输出示例:
[root@simon ~]# history8 ls -lh9 find ./ -size -8k10 ls -lh11 find ./ -size -2k12 ls -lh
- 查看历史命令中的特定条目:
history | grep "mkdir"
这会过滤出历史记录中所有包含 mkdir
的命令。
- 执行历史命令:
使用历史命令编号执行:
!12
这会执行编号为12的命令,即 ls -lh
。
四、scp
4.1 scp功能
scp
命令用于通过 SSH 协议在本地和远程服务器之间安全地复制文件或目录。它加密了数据传输,因此更加安全。
4.2 scp详细案例
- 将本地文件复制到远程服务器:
scp file.txt user@remote:/path/to/destination/命令 本地文件 用户@IP地址或者主机名 远程主机的路径
将当前目录test01.txt
拷贝到目标服务器的/opt/backup
目录下
scp test01.txt root@192.168.10.123:/opt/backup/
- 将本地目录复制到远程服务器:
将/opt
拷贝到目标服务器的/opt/backup
目录下
scp -r /opt root@192.168.10.123:/opt/backup
- 将远程文件复制到本地:
将远程服务器/opt/backup/test01.txt
文件复制到本地/opt
目录下
scp root@192.168.10.123:/opt/backup/test01.txt /opt
- 从远程服务器复制整个目录到本地:
将远程服务器/opt/backup
文件夹复制到本地/opt
目录下
scp -r root@192.168.10.123:/opt/backup/ /opt/
五、rsync
5.1 rsync功能
rsync
是一个非常强大的文件同步工具,支持增量同步,减少了文件传输的时间和带宽消耗。它可以同步文件和目录,不仅可以在本地计算机之间同步,也支持远程同步。
5.2 rsync详细案例
- 将本地目录同步到远程服务器:
#将本地目录/opt同步到远程服务器/opt/backup目录下
rsync -avz /opt root@192.168.10.123:/opt/backup
参数说明:
-a
:归档模式,表示保持文件的所有属性(如权限、时间戳等)。-v
:详细模式,显示传输过程中的文件。-z
:启用压缩传输。
- 将远程目录同步到本地:
#将远程服务器/opt/backup目录目录同步到本地的/home目录下rsync -avz root@192.168.10.123:/opt/backup /opt/
- 同步文件时,排除某些文件:
rsync -avz --exclude="*.log" /opt root@192.168.10.123:/opt/backup/
这会排除所有 .log
后缀的文件。
- 仅同步文件变化:
rsync -avz --ignore-existing /opt root@192.168.10.123:/opt/backup/
这会跳过远程目录中已经存在的文件,只同步新的文件。
可以看到,此时本地和远程服务器目录中的文件是一致的。我们创建新的文件newfile.txt
。
touch newfile.txt
执行rsync -avz --ignore-existing /opt root@192.168.10.123:/opt/backup/
,可以看到只发送了newfile.txt
。
在远程服务器中查看更新的内容
六、ssh
6.1 ssh功能
ssh
(Secure Shell)命令用于通过加密连接远程登录到计算机。它使得你可以安全地访问远程机器并执行命令。
6.2 ssh详细案例
- 登录到远程服务器:
ssh root@192.168.10.123
这会连接到远程主机 192.168.10.123
上的 root
用户。
- 使用不同端口登录:
ssh -p 2222 root@192.168.10.123
通过 -p
选项指定端口,默认端口是 22。
- 通过 SSH 执行远程命令:
ssh root@192.168.10.123 'ls -l /home/'
这会在远程主机上执行 ls -l /home/
命令,列出指定目录的内容。
6.3 可能遇到的问题
6.3.1 ssh: connect to host 192.168.10.123 port 2222: Connection refused
[root@simon ~]# ssh -p 2222 root@192.168.10.123
ssh: connect to host 192.168.10.123 port 2222: Connection refused
**问题描述:**SSH 客户端无法连接到目标服务器的指定端口。
解决方案:
SSH 监听端口配置错误
检查 /etc/ssh/sshd_config
文件:
grep Port /etc/ssh/sshd_config
[root@localhost ~]# grep Port /etc/ssh/sshd_config
#Port 22
#GatewayPorts no
若发现没有2222端口,修改 SSH 配置文件:
vim /etc/ssh/sshd_config
找到 #Port 22 这一行,取消注释并修改为:
Port 22
Port 2222
重启 SSH 服务
systemctl restart sshd
检查是否监听2222端口
ss -tulnp|grep 2222
仍然无输出,说明SSH 服务没有在监听2222 端口。大概率是SELinux 阻止新端口。
通过 SELinux 放行 2222 端口
# 查看 SELinux 对 SSH 端口的设定
semanage port -l | grep ssh_port_t# 添加 2222 端口到 SSH 允许列表
sudo semanage port -a -t ssh_port_t -p tcp 2222# 重启一下ssh服务
systemctl restart sshd# 检查是否监听2222端口
ss -tulnp|grep 2222
2222端口成功被ssh监听
连接成功
关键检查点:
- 配置错误 ,
grep Port /etc/ssh/sshd_config
,修改/etc/ssh/sshd_config
文件| - 端口占用,
sudo ss -tulnp | grep :2222
,如果有占用,终止占用进程或更换端口 - SELinux 限制,
sudo semanage port -l
将 2222 端口加入允许列表
七、nohup
7.1 nohup功能
nohup
命令用于让某个进程在后台运行,并且使其在关闭终端后依然保持运行。nohup
会将标准输出和错误输出重定向到 nohup.out
文件中。
nohup python test.py &
与python test.py &
区别:
1、python test.py &
(普通后台运行)
-
后台运行:& 让脚本在后台执行,不占用当前终端。
-
终端关闭时:进程会收到 SIGHUP(挂断信号)并 终止。
-
输出:脚本的 stdout/stderr 默认仍打印到终端(可能干扰当前会话)。
-
适用场景:临时后台任务,且终端会话不会关闭。
2、nohup python test.py &
(无视挂断的后台运行)
-
忽略 SIGHUP:nohup 使进程忽略终端关闭时的挂断信号,终端退出后仍继续运行。
-
输出重定向:默认将 stdout/stderr 重定向到 nohup.out 文件(避免干扰终端)。
-
适用场景:需要长期运行的任务(如通过 SSH 启动服务)。
7.2 nohup详细案例
脚本内容 (nohup_test.py)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import datetimedef main():print("脚本已启动,所有输出将写入 nohup.out")print("按 Ctrl+C 终止脚本")try:while True:current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")log_message = "[%s] 脚本正在运行..." % current_timeprint log_message # 输出到 stdout(会被 nohup 捕获到 nohup.out)time.sleep(5) # 每5秒输出一次except KeyboardInterrupt:print "\n脚本被手动终止"if __name__ == "__main__":main()
- 让脚本在后台运行:
nohup python nohup_test.py &
这会使 nohup_test.py
脚本在后台运行,即使终端关闭,脚本也会继续执行。
- 查看后台任务的输出:
tail -f nohup.out
这会实时查看后台任务的输出。
八 reboot
8.1 reboot功能
reboot
命令用于重启计算机。在一些场景中需要重新启动计算机以应用更新或其他操作。
8.2 reboot详细案例
- 重启计算机:
sudo reboot
这会立即重启计算机。
九、shutdown
9.1 shutdown功能
shutdown
命令用于关闭计算机。它可以指定一个延迟时间,或者立即关闭系统。
9.2 shutdown详细案例
- 立即关闭系统:
sudo shutdown -h now
这会立即关闭计算机。
- 延迟关闭系统:
sudo shutdown -h +10
这会在10分钟后关闭系统。
- 重启系统:
sudo shutdown -r now
这会立即重启计算机。
- 延时重启系统:
sudo shutdown -r +10
这会十分钟后重启计算机。
十、free命令
用于显示系统的内存使用情况,包括物理内存(RAM)、交换空间(swap)和内核缓冲区。它是 Linux 系统中非常常用的一个命令,用于查看内存的总体状态。
10.1 free命令功能
free
命令提供以下几个主要信息:
- 总内存:物理内存的总量。
- 已用内存:已经被系统或应用程序使用的内存。
- 空闲内存:没有被使用的内存。
- 共享内存:不同进程之间共享的内存空间。
- 缓存内存:操作系统用作缓存的数据。
- 交换内存(Swap):当物理内存不足时,系统使用磁盘上的空间作为虚拟内存(交换空间)。
10.2 free基本命令格式
free [options]
常用选项
-h
:以人类可读的方式显示(自动选择合适的单位,如 KB, MB, GB)。-m
:以 MB 为单位显示内存。-g
:以 GB 为单位显示内存。-t
:显示内存的总和(即总内存 + 总交换空间)。-s
:以秒为单位指定显示刷新时间间隔。-l
:显示低内存和高内存的详细信息。
10.3 free基本用法
- 显示当前内存使用情况:
free
输出示例:
[root@simon ~]# freetotal used free shared buff/cache available
Mem: 3861300 537320 2948504 12424 375476 3088540
Swap: 4194300 0 4194300
解释:
total
:总内存。used
:已用内存。free
:空闲内存。shared
:被多个进程共享的内存。buff/cache
:系统缓冲区和缓存使用的内存。available
:可以用来启动新应用程序的内存(考虑了缓存和缓冲的回收)。
- 以人类可读的格式显示内存:
free -h
输出示例:
[root@simon ~]# free -htotal used free shared buff/cache available
Mem: 3.7G 859M 2.3G 15M 505M 2.6G
Swap: 4.0G 0B 4.0G
- 显示内存使用情况(以 MB 为单位):
free -m
输出示例:
[root@simon ~]# free -mtotal used free shared buff/cache available
Mem: 3770 856 2408 15 506 2679
Swap: 4095 0 4095
- 显示内存和交换空间的总和:
free -t
输出示例:
[root@simon ~]# free -ttotal used free shared buff/cache available
Mem: 3861300 876868 2466224 15728 518208 2743924
Swap: 4194300 0 4194300
Total: 8055600 876868 6660524
- 每 5 秒刷新一次显示内存使用情况:
free -s 5
这会每5秒钟更新一次内存的使用情况,直到手动终止(按 Ctrl+C
)。
10.4 free输出字段解释
free
命令的输出通常包含两行:一行显示内存(Mem),一行显示交换空间(Swap)。
- Mem 行:
total
:总物理内存(RAM)。used
:已用内存(包括缓存、共享内存、应用程序使用的内存等)。free
:空闲内存。shared
:共享内存,指多个进程之间共享的内存。buff/cache
:缓冲区和缓存所占用的内存。系统会使用这部分内存来缓存磁盘数据,以加快访问速度。available
:系统可用的内存。这个值并不是单纯的空闲内存,而是指经过系统缓存和缓冲区回收后的可以使用的内存。
- Swap 行:
total
:总交换空间大小。used
:已使用的交换空间。free
:剩余的交换空间。
10.5 free典型应用场景
- 检查内存使用情况:
你可以通过free
命令快速了解当前系统的内存使用情况,帮助你判断是否有内存不足的情况,或者是否需要调整交换空间。 - 监控内存和交换空间使用情况:
如果系统经常使用大量的交换空间,可能意味着系统内存不足,可能需要增加物理内存或调整系统配置。 - 检查缓冲区和缓存的影响:
通过buff/cache
和available
字段,你可以了解系统缓存占用了多少内存,以及哪些内存是可以被回收利用的。
10.6 free高级技巧
- 查看内存使用趋势:
如果你需要实时监控内存使用情况并保存到文件中,可以结合free
和watch
命令:
watch -n 1 free -h
这会每秒刷新一次显示内存使用情况。
-
使用
free
监控系统健康状态:- 监控内存是否充足。
- 判断是否有大量的缓存内存导致可用内存减少。
- 如果交换空间使用量较大,考虑优化内存使用或增加物理内存。
10.7 free总结
free
命令是查看内存和交换空间使用情况的非常实用工具,尤其在 Linux 系统管理中频繁使用。通过它,您可以迅速了解系统内存的总体状况,帮助您优化系统性能或解决内存不足的问题。
总结
本文档系统地介绍了 Linux 系统中多个常用命令的功能和实际应用场景。从基础的 date
和 cal
命令到高级的 scp
、rsync
和 ssh
工具,再到系统管理相关的 reboot
、shutdown
和 free
命令,这些工具为日常的系统操作和管理提供了极大的便利。
通过学习这些命令,您可以:
- 高效地管理系统时间和日历。
- 快速检索和执行历史命令。
- 安全地在本地和远程服务器之间传输文件。
- 通过 SSH 远程连接并管理服务器。
- 让任务在后台持续运行,不受终端关闭的影响。
- 监控系统内存使用情况,优化性能。
- 灵活地重启或关闭系统。
掌握这些命令不仅能提升您在终端环境下的操作效率,还能帮助您更好地理解和维护 Linux 系统。建议您在实际操作中多加练习,逐步熟悉这些工具的更多高级用法。如果您在学习过程中遇到问题,可以参考相关文档或社区资源,进一步扩展您的知识面。祝您在 Linux 的学习和使用中取得更大的进步!