前言

刚接触Linux服务器?本文为你汇总了最核心、最常用的一些基础命令,帮助你快速上手,高效地管理你的服务器。

一、基础系统管理

1.1 更新系统

保持系统为最新状态是安全的基础。

# 更新软件包列表
sudo apt update

# 升级所有已安装的软件包
sudo apt upgrade

1.2 查看系统信息

快速了解服务器的状况。

# 查看系统版本
cat /etc/os-release

# 查看内存使用情况
free -h

# 查看磁盘空间使用情况
df -h

# 查看CPU信息
lscpu

二、安全与便捷设置

2.1 强化SSH安全

建议禁止密码登录,只使用SSH密钥登录,这是保障服务器安全的重要一步。

编辑SSH配置文件:

sudo nano /etc/ssh/sshd_config

确保以下配置项是这样设置的:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin prohibit-password

修改后重启SSH服务以生效:

sudo systemctl restart sshd

2.2 快速添加SSH公钥

将你的公钥添加到服务器,以便免密登录。

# 创建.ssh目录(如果不存在)
mkdir -p ~/.ssh

# 将你的公钥内容追加到authorized_keys文件
echo "你的SSH公钥内容" >> ~/.ssh/authorized_keys

# 设置正确的目录和文件权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

注意:将 你的SSH公钥内容 替换为你的真实公钥字符串 (例如 ssh-rsa AAAA... user@example.com)。

2.3 设置 ll 命令别名

llls -la 的一个常用别名,可以更方便地查看文件和目录的详细列表。

# 将别名设置追加到.bashrc配置文件
echo "alias ll='ls -la'" >> ~/.bashrc

# 使配置立即生效
source ~/.bashrc

三、常用核心命令

3.1 文件与目录操作

查看文件内容

# 实时查看文件末尾的新增内容,常用于看日志
tail -f /var/log/syslog

# 查看文件最后10行
tail -n 10 filename.txt

搜索文件内容 (grep)

grep 是一个强大的文本搜索工具。

# 在文件中搜索关键词
grep "搜索词" filename.txt

# 在目录中递归搜索 (不区分大小写)
grep -ri "error" /path/to/directory

# 搜索并显示匹配行的行号
grep -n "搜索词" filename.txt

# 搜索并显示匹配内容及前后2行
grep -A 2 -B 2 "error" filename.txt

创建文件与目录

# 创建一个空文件
touch filename.txt

# 创建一个目录
mkdir directory_name

# 递归创建多级目录
mkdir -p path/to/new/directory

3.2 进程与系统监控

监控系统资源

# 实时交互式查看进程和系统资源占用
top

# 查看所有进程
ps aux

# 查找特定进程
ps aux | grep "进程名"

管理进程

# 结束进程 (通过进程ID)
kill PID

# 强制结束进程
kill -9 PID

# 通过进程名结束所有匹配的进程
pkill "进程名"

后台任务

# 让命令在后台运行
nohup command &

# 查看后台运行的任务
jobs

示例:后台运行一个Python脚本

假设你有一个需要长时间运行的脚本 my_task.py,可以使用以下命令:

nohup python my_task.py &

这样,脚本就会在后台持续运行,即使你关闭终端。所有输出会被默认保存到当前目录的 nohup.out 文件中。

四、定时任务 (Crontab)

使用 crontab 可以让系统在指定时间自动执行任务。

# 编辑当前用户的定时任务
crontab -e

# 查看当前用户的定时任务列表
crontab -l

Crontab 格式说明:

# 分钟(0-59) 小时(0-23) 日(1-31) 月(1-12) 星期(0-7, 0和7都代表周日)  要执行的命令

常用示例:

# 每天凌晨3点执行备份脚本
0 3 * * * /path/to/backup.sh

# 每周日凌晨2点30分执行清理任务
30 2 * * 0 /path/to/cleanup.sh

# 每月1号凌晨执行日志归档
0 0 1 * * /path/to/archive-logs.sh