Go 程序员的 Linux 修炼手册
一、基础命令:牢固的基础才是进阶的基石
1. cd
进入某个目录
bash
# 进入我的项目目录
cd home/user/workspace/my-project
# 返回上一级目录
cd ..
# 切换到上一次所在的目录
cd -
# 切换到当前用户的主目录
cd
或者
cd ~
2. ls
列出文件
bash
# 列出所有的文件(只显示文件名)
ls
# 以长格式列出文件
ls -l
# 以长格式列出文件,并显示人类能看懂的文件大小
ls -lh
# 显示所有文件,包括隐藏文件(以 . 开头的文件)
ls -a
ls -lh
示例:
bash
drwxrwxr-x 9 user user 4.0K 7月 17 15:50 my-project1
drwxrwxr-x 17 user user 4.0K 7月 18 10:08 my-project2
每个字段分别对应:权限、硬链接数、所有者、所有组、文件大小、最后修改日期和时间、文件/目录名
3.pwd
列出当前所在路径
bash
pwd
- 示例:
arduino
/home/user/workspace
4.mkdir
创建目录
bash
mkdir new_folder
5.rmdir
删除空目录
bash
rmdir empty_folder
6.rm
删除目录/文件
bash
# 删除 file.txt
rm file.txt
# 强制删除文件,不提示确认
rm -f file.txt
# 强制递归删除目录(不可撤销恢复,谨慎使用)
rm -rf folder/
7.mv
移动或重命名文件/目录
bash
# 移动file.txt文件至/tmp/file目录下
mv file.txt /tmp/file
# 将file.txt文件重命名为newfile.txt
mv file.txt newfile.txt
二、文件内容查看:一个绅士要学会优雅地阅读
1.cat
查看整个文件内容
- 主要用于查看像配置文件之类的较小的文件,或者将多个文件连接成一个文件
bash
# 查看配置文件内容
cat config.yml
# 合并文件
cat file1.txt file2.txt > file3.txt
# 显示行号
cat -n filename.txt
# 显示非打印字符(例如 Tab 键)
cat -v filename.txt
2.less
分页查看大型文件
- 它允许您在不将整个文件加载到内存的情况下查看文件 。它比
cat
更强大,特别适合查看大文件,因为它支持前进、后退、搜索等功能。
bash
less filename.log
**空格键 ** 或 f:向下翻一页。
b:向上翻一页。
j 或
↓
:向下滚动一行。k 或
↑
:向上滚动一行。g:跳转到文件开头。
G:跳转到文件末尾。
/ :向下搜索,输入关键词后按
Enter
,然后按n
查找下一个匹配项,N
查找上一个匹配项。? :向上搜索(用法同
/
)。q :退出
less
。
3.tail
查看文件末尾内容
它在查看日志文件或监控文件实时更新时非常有用
bash
# 正常使用,显示文件最后10行(可以通过设置 -n 属性来设置最后行数,例如-n 50)
tail filename.log
# 实时监控文件(最常用)
tail -f filename.log
# 可以配合grep来查看特定的内容,例如:查看日志中的ERROR标签信息
tail -n 100 -f filename.log | grep "ERROR"
head
同理,默认显示文件前10行内容,由于不常使用,不多赘述
三、文本编辑器:看多了,偶尔也要试试手
在编辑一些重要的配置文件时,会出现没有权限更新的情况,这时要在命令前加上
sudo
1. nano
nano
编辑器对新手更友好,可以正常使用ctrl+s
的方式来保存编辑
bash
nano file.txt
2. vim
vim
编辑器功能强大但学习曲线较陡峭
- 一般进入后按
i
键进行插入修改,按esc
键退出修改,输入:wq
进行保存退出 :w
意为保存:q
意为退出,:q!
强制退出
bash
vim file.txt
四、进程资源管理:想要进一步了解系统的秘密吗?快去探寻吧
1.ps
显示当前运行的进程
bash
# 显示所有用户的所有进程的详细信息
ps aux
# 同理 ps 也可以配合 grep 来查看指定进程的信息
ps aux | grep "user"
2. top
实时显示系统进程状态和资源使用情况(CPU、内存等)
bash
top
top
进入交互页面,按q
退出
3.df
显示磁盘空间使用情况
bash
# 以人类可读的格式显示磁盘分区使用情况
df -h
4.du
显示文件或目录的磁盘使用情况
bash
# 显示目录的总大小
du -sh folder/
5. free
显示内存使用情况
bash
# 以人类可读的格式显示内存使用情况
free -h
6.whoami
显示当前用户的用户名
bash
whoami
# 示例输出:
user
7.uname
显示系统信息
bash
# 显示所有系统信息,包括内核版本、操作系统等
uname -a
五、权限管理:有些事情做不了,不是他的错
1. chmod
改变文件或目录的权限
bash
# 设置 script.sh 为所有者可读写执行,组和其他用户只读执行
chmod 755 script.sh
# 为 script.sh 添加执行权限
chmod +x script.sh
通过ls -lh
命令,我们可以看到类似这样的内容:drwxrwxr-x
d
:该文件为目录,没有则是文件r
:读权限w
:写权限x
:执行权限-
:无权限
这一串一共10个字符,第一位是判断是文件还是目录,后面每3位为一组
第一组:所有者(owner)的权限
第二组:所属组(group)的权限
第三组:其他人(others)的权限
2.chown
改变文件或目录的所有者
bash
# 将 file.txt 的所有者改为 user,所属组改为 user
chown user:user file.txt
六、网络命令:不是你代码错了,是你网卡断了
1.ping
测试网络连通性
bash
# 测试连接
ping google.com
2.ip addr
bash
# 显示所有网络接口的 IP 地址、MAC 地址等信息
ip addr
3.netstat/ss
查看端口监听情况
bash
# 查看端口监听情况,确认服务有没有正常启动,在不添加sudo的情况下,Process的信息会隐藏
netstat -nptl
sudo ss -nptl
4.curl/wget
检查接口
bash
# 用命令行替代浏览器
curl http://localhost:8080/helloworld
wget http://localhost:8080/demo
七、帮助命令:你最好的助手,他一直都在
当您忘记某个命令的用法或者参数的意义时,你可以使用
man/--help
bash
# 查看命令的详细帮助文档
man ls
man ss
man chown
# 显示简短的帮助信息
ls --help
ss --help
八、服务管理:别在为关闭终端就关闭项目而苦恼了,快把他配成服务
建议线上服务都注册为 systemd 服务,这样你就能更优雅地管理它
管理服务主要使用 systemctl
命令,操作时通常需要 sudo
权限
假设服务名为 my-app
- 启动服务:
bash
sudo systemctl start my-app
- 停止服务:
bash
sudo systemctl stop my-app
- 重启服务:
bash
sudo systemctl restart my-app
- 查看服务状态: 这是最重要的调试命令,可以查看服务是否正在运行、PID、内存占用以及最近的日志。
bash
sudo systemctl status my-app
- 设置开机自启:
bash
sudo systemctl enable my-app
- 取消开机自启:
bash
sudo systemctl disable my-app
- 查看服务日志:
systemd
通过journald
管理日志。您可以使用journalctl
查看服务的完整日志。
bash
# 查看指定服务的所有日志
sudo journalctl -u my-app
# 实时查看最新的日志(类似于 tail -f)
sudo journalctl -u my-app -f
# 查看最近 100 行日志
sudo journalctl -u my-app -n 100