小明的Linux实习之旅:基础指令练习情景练习题下
前景提要
小明刚刚开始他的Linux测试开发实习。第一天,他的leader给了他一系列任务,帮助他熟悉Linux命令行操作。以下是小明的冒险故事。
小明是怎么做的
场景1:初识Linux,创建目录和文件
-
小明的导师要求他创建一个项目目录,并在其中创建一个README文件。
mkdir ~/project #make directory建立目录 cd ~/project #change directory,改变目录或切换到另一个文件夹 touch README.md #碰到文件
-
小明在README.md中写下了项目简介,但不小心写错了内容。
vi README.md # 按i进入插入模式,输入“这是小明的第一个项目。” # 但写成了“这是小明的第一个错误。” # 按Esc键,输入:wq保存并退出
-
小明发现写错了,需要修改内容。
vi README.md # 按i进入插入模式,将“错误”改为“项目” # 按Esc键,输入:wq保存并退出
-
导师检查后,认为小明的描述还不够详细,要求他再添加一些信息。
echo "项目描述:这是一个用于学习Linux基本命令的项目。" >> README.md cat README.md #concatenate(连锁,用于连接并显示文件内容)
小明的电脑界面:
场景2:权限管理,小明的权限困惑
-
导师提醒小明要注意文件权限管理,要求他将README.md的权限修改为755。
chmod 755 README.md #change mode改变权限 ls -l README.md #list(列出目录内容)
-
导师还要求小明将项目目录的所有者改为root。
sudo chown root:root ~/project #superuser do,用于执行需要超级用户(root)权限的命令,而不需要实际切换到root用户 #change owner改变所有者 ls -ld ~/project #d:directory,表示只显示目录的信息不显示内部文件(夹)
3.导师刚才说错了,他是要确认该项目目录不是root,因为之后需要进行一些写入操作。小明于是默默地将项目目录的所有者改回来。
-
groups christine #确认原来默认群组是否也是christine(我的用户名) # 结果:christine : christine [christine@localhost rongyi_project]$ sudo chown # 结果:christine:christine ~/rongyi_project [christine@localhost rongyi_project]$ ls -ld ~/rongyi_project # 结果: drwxrwxr-x. 2 christine christine 68 6月 9 00:46 /home/christine/rongyi_project
小明的电脑界面:
场景3:打包与解压,小明的备份操作
-
导师告诉小明要定期备份项目目录,于是小明打包了整个项目目录。
#确保回到home页面 cd ~ # 使用 tar 命令来打包目录时,压缩文件会被存放在执行命令时所在的目录中。 tar -cvf project_v1.tar project #区别~/project ls -lh project_v1.tar
-
一天,小明需要恢复之前的备份,于是他解压了备份文件。
mkdir ~/backup #新建一个备份目录用来放解压文件 tar -xvf project_v1.tar -C backup #-C一定是大写,tar方法敏感 cd backup ls
小明的电脑界面:
场景4:使用Grep,小明的搜索技能
-
小明需要在项目目录中查找所有包含“项目”字样的文件。
grep -r "项目" ~/project # grep:文本搜索工具,允许你使用正则表达式来搜索文本。 # -r:递归搜索,即搜索指定目录及其所有子目录中的文件。
-
导师要求他找出README.md文件中所有包含“描述”字样的行。
grep "描述" ~/project/README.md
小明的电脑界面:
场景5:系统服务管理,小明的首次接触
-
导师让小明检查防火墙状态,并确保它是开启的。
sudo systemctl status firewalld sudo systemctl start firewalld
-
导师让小明启动MySQL服务并查看其状态。
sudo systemctl start mysql sudo systemctl status mysql
-
小明还需要启动Redis服务并检查其状态。
sudo systemctl start redis sudo systemctl status redis
-
最后,导师让小明查看网络接口的状态。
ifconfig
小明的电脑界面:
小明笔记大公开:
场景6:进程管理,小明的多任务处理
-
小明查看了系统中所有正在运行的进程。
ps -ef
-
小明搜到了一个排序方法,发现有一个进程占用了大量内存资源,于是他结束了该进程。。
ps aux --sort=-%mem #按内存使用量排序:通过管道和 sort 命令按 %MEM 或 RSS 列排序,找到内存占用最高的进程。 # kill <PID> #新手不要学小明,容易坏事 终止指定PID
-
小明根据进程名称结束了一个测试进程。
pkill test_process #终止指定进程名
小明笔记大公开:
场景7:定时任务与系统状态
-
导师要求小明设置一个定时任务,每天备份项目目录。
crontab -e # 添加以下行以每天午夜备份项目目录: # 0 0 * * * tar -cvf ~/project_v1_$(date +\%F).tar ~/rongyi_project
-
小明查看了当前用户的所有定时任务。
crontab -l
小明笔记大公开:
-
小明查看了系统运行时间和负载信息。
uptime
小明笔记大公开之uptime
命令:
- 小明查看了系统内存使用情况。
free -h
小明笔记大公开之关于内存:
- 小明查看了磁盘使用情况。
df -h
小明笔记大公开之uptime
命令:
- 小明使用top命令实时查看系统资源使用情况。
top
小明笔记大公开之top
命令:
场景8:dd命令,小明的惊险操作
*这几步不用跟着做,容易出问题,了解即可
-
小明使用
dd
命令备份数据。sudo dd if=/dev/sda of=~/sda_backup.img bs=4M # dd 命令用于低级复制和转换文件,在这里,它被用来复制整个硬盘。名称来源于 "data duplicator" 或 "disk dump" 的缩写 # if 是 "input file" 的缩写。of 是 "output file" 的缩写。bs 是 "block size" 的缩写。 # if=/dev/sda: 这是 dd 命令的一个选项,指定输入文件(或设备)。 # 注意:/dev/sda 通常指的是整个硬盘,而不是某个分区(如 /dev/sda1)。 # bs=4M是 dd 命令的块大小(block size)选项。指定了每次读取和写入的块大小为 4MB,可以提高复制大文件的效率。
小明的提醒:
- 小明试图恢复数据,但不小心输入了错误的输出路径,导致系统崩溃。
sudo dd if=~/sda_backup.img of=/wrong/path bs=4M
# 系统崩溃,恢复重启后导师解释了错误的原因
- 小明再试一次,这次成功恢复了数据。
sudo dd if=~/sda_backup.img of=/dev/sda bs=4M