【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战

简介: 【Linux操作系统】探秘Linux奥秘:进程与任务管理的解密与实战



🪐1 初识Linux OS

Linux是一种开源的Unix-like操作系统内核,它是基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。Linux内核最初是由芬兰程序员Linus Torvalds在1991年创建的,之后成为自由软件和开源社区的一个主要项目。

以下是Linux操作系统的一些主要特点和组成部分:

  1. 内核(Kernel): Linux内核是操作系统的核心,它管理系统资源,如处理器、内存、设备驱动程序等。Linus Torvalds最初编写了Linux内核,它是Linux操作系统的基础。
  2. Shell(命令解释器): Linux操作系统使用命令行界面(CLI),用户与系统交互通过Shell。用户可以通过输入命令执行各种任务,管理文件、进程、权限等。常见的Shell包括Bash(Bourne Again SHell)和Zsh。
  3. 文件系统: Linux支持多种文件系统,包括Ext4、XFS、Btrfs等。文件系统负责管理存储设备上的文件和目录,以及文件的权限、所有权等信息。
  4. 用户界面: 虽然Linux以CLI为主,但也支持图形用户界面(GUI)。常见的Linux桌面环境有GNOME、KDE、XFCE等,它们提供了直观的用户体验。
  5. 软件包管理系统: 大多数Linux发行版都有自己的软件包管理系统,用于安装、更新和删除软件。常见的包管理工具有APT(Debian/Ubuntu)、YUM(Red Hat/CentOS)、Pacman(Arch Linux)等。
  6. 网络功能: Linux具有强大的网络功能,支持各种网络协议和服务。它可以作为服务器运行各种网络服务,如Web服务器(Apache、Nginx)、邮件服务器(Postfix、Sendmail)、文件服务器(Samba)等。
  7. 多用户和多任务: Linux是一个多用户系统,多个用户可以同时访问同一台机器。它也是一个多任务系统,可以同时运行多个进程。
  8. 安全性: Linux以安全性而闻名,系统管理员可以设置用户权限、访问控制列表(ACLs)等来确保系统的安全性。
  9. 开源和自由: Linux是开源软件,其源代码可以被任何人查看、修改和分发。大多数Linux发行版是免费提供的,用户可以自由选择、使用和分发。
  10. 发行版(Distribution): 由于Linux内核是开源的,不同的组织和社区创建了各种Linux发行版,例如Ubuntu、Debian、Fedora、CentOS、Arch Linux等。每个发行版都有自己的特点和包管理系统。

总体而言,Linux操作系统是一个强大、灵活且可定制的操作系统,广泛应用于服务器、嵌入式系统、超级计算机等各种领域。


🪐2 进程与任务管理的解密与实战

🌍1. 实验目的

  • 掌握常用进程管理指令。
  • 熟悉定时任务的设置。
  • 熟悉任务调度的操作。

🌍2. 实验准备

  • 获取 Linux 镜像 文件:下载适用于虚拟机的 Linux 镜像文件,比如 Ubuntu 21.04,从 Ubuntu 官方网站 获取。
  • 安装虚拟化软件:安装 VMware Workstation 或 Virtualbox,两者提供简便的虚拟机管理和配置。
  • 创建 Linux 虚拟机:打开虚拟化软件,按照指引创建新虚拟机。设置内存为 2GB 或更多,其余选项选择默 认值。加载下载好的 Linux 系统 ISO 镜像文件,启动虚拟机完成 Linux 系统安装。

🌍3. 实验内容

1. 进程管理

(1)练习进程状态查询命令ps.

ps的功能是显示进程的状态和信息,给出系统当前正在运行进程信息的快照。ps支持多种UNIX系统格式的个性化显示方式,其用法为:ps [options].

#长格式显示所有进程的信息

$ ps -el

#带命令行参数显示系统中的所有进程信息,并分屏显示

$ ps -Af | more

#查询与终端tty1相关的进程信息

$ ps -t /dev/tty1   #查询与用户(gjshao)相关的信息

以及$ ps -f -u gjshao #查询整个系统内的进程信息情况

$ ps -axj

 

(2)练习进程管理命令systemctl、killall、pgrep/pkill、fuser、nice.

a. systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能并发启动更多进程。systemd对应的进程管理命令是systemctl.

systemctl list-unit-files #列出所用可用单元

systemctl list-units #列出所有运行中的单元

systemctl is-enabled crond.service #检查某个单元是否启用

systemctl list-unit-files ?Ctype=service # 列出所有服务

b. 按名称向进程发信号或终止进程的执行(killall).

c.根据进程名等属性查找进程和发送信号(pgrep/pkill).

d.确定使用指定文件或文件系统的进程(fuser).

e.设置进程的优先级(nice).

(3)练习可执行文件的特殊属性操作

1)新建文件

2)查看文件权限

3)设置、修改、查看文件特殊权限suid、sgid及sticky

新建文件、查看文件以及设置、修改、查看文件特殊权限suid

   

设置、修改、查看文件特殊权限sgid

设置、修改、查看文件特殊权限sticky

2. 任务管理

(1)利用at命令完成定时任务设置、查看并删除任务

使用at -V查看at版本,发现本地未部署因此我们使用apt install at进行安装。

(2)利用 crontab完成任务调度设置:每隔1分钟,将当前日期和日历追加到/home/mycal文件中。

步骤:

1)vim /home/my.sh,写入命令

2) 给my.sh增加执行权限

3)crontab -e ,增加任务

4)列出当前定时任务

5)删除定时任务

 


🌍4. 实验心得

  1. 身份切换与权限管理 通过实验,我学会了在特定情境下以不同身份(如root、其他用户)运行命令的方法。深入理解了SUID(Set User ID)、SGID(Set Group ID)以及Sticky权限的概念。SUID和SGID的应用使得文件在执行时能够获取文件自身的属主和属组权限,而不是执行者的权限。另外,Sticky权限的应用于公共目录,实现了对文件的保护,限制了用户对其他人文件的删除操作。
  2. 定时任务与任务调度 在实验中,我熟悉了常见的进程管理指令,并深入了解了定时任务的设置。通过使用crontab -e命令,我了解到root用户未设置定时任务时系统会显示“no crontab for root - using an empty one”提示。解决方法是选择合适的编辑器(如vim),并保存退出以创建或编辑定时任务。这使我更好地掌握了任务调度的实际操作。
  3. 技巧性操作与问题解决 在实验中,我学到了一些技巧性的操作,如使用ctrl+c无法退出时,选择vim编辑器后的正确退出方式(q退出,wq保存退出)。这种细致入微的操作技巧在实际应用中能够提高效率,确保任务顺利完成。同时,遇到问题时的解决思路也更加清晰,为系统管理和维护提供了有力的支持。

📝总结

Linux操作系统的领域就像一片未被勘探的信息大海,引领你勇敢踏入开源系统的神秘领域。这是一场独特的学习冒险,从基本概念到系统架构,逐步揭示更深层次的操作系统原理、命令行工具和高级系统管理的奥秘。


目录
相关文章
人工智能 运维 架构师
317 0
|
6月前
|
Web App开发 缓存 Rust
|
6月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
7月前
|
缓存 NoSQL Unix
【实战指南】守护进程服务实现
本文介绍了在Linux系统中实现守护进程异常重启的几种方案。通过理解僵死进程和信号处理机制,提出了基于SIGCHLD信号监听、轮询proc文件系统及waitpid接口的三种方法,并给出了C++实现代码。最终选择轮询方式以提升稳定性,确保服务进程在崩溃后能自动重启,保障系统可靠性。
406 68
|
8月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
193 0
|
8月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
261 0
|
8月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
157 0
|
8月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
213 0
|
11月前
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
|
11月前
|
Linux Shell
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
984 5