七天掌握Linux-第三天

78 阅读5分钟

Linux学习教程:第3天——掌握Linux进程管理和Shell脚本编写的基础

一、目标概述

在第3天的学习中,我们的目标是掌握Linux进程管理和Shell脚本编写的基础。这包括进程的启动、终止和优先级调整,了解Shell的类型和选择,学习Shell脚本的基本语法和常用命令,并通过编写简单的Shell脚本进行实践。

二、详细学习内容

1. 进程的启动、终止和优先级调整

(1)进程的启动

在Linux系统中,进程是程序运行的实例。启动进程的方式有多种,最常见的是通过命令行终端执行程序。

  • 前台启动:直接在命令行中输入命令并回车,程序会以前台进程的方式运行。例如,输入firefox命令启动Firefox浏览器。
  • 后台启动:在命令的末尾加上&符号,程序会以后台进程的方式运行。例如,输入gedit &命令在后台启动文本编辑器gedit。

(2)进程的终止

终止进程通常使用kill命令,该命令通过向进程发送信号来终止它。常用的信号有:

  • SIGTERM(15):默认终止信号,要求进程正常退出。
  • SIGKILL(9):强制终止信号,立即终止进程。

要终止进程,首先需要知道进程的PID(进程ID)。可以使用pstoppgrep等命令查看进程ID。例如,使用ps aux | grep firefox查找Firefox进程的PID。

一旦找到PID,就可以使用kill命令终止进程。例如,kill 1234发送SIGTERM信号给PID为1234的进程,kill -9 1234发送SIGKILL信号。

(3)进程的优先级调整

进程的优先级(也称为nice值)决定了进程在CPU上的调度优先级。nice值的范围是-20到19,其中-20是最高优先级,19是最低优先级。

  • 查看进程的nice值:使用ps -eo pid,ni,comm命令。
  • 启动进程时设置nice值:使用nice -n [nice值] [命令]。例如,nice -n 10 firefox以nice值为10启动Firefox。
  • 调整已运行进程的nice值:使用renice [new_nice值] -p [PID]。例如,renice 5 -p 1234将PID为1234的进程的nice值调整为5。
2. Shell的类型和选择

(1)Shell的类型

Shell是用户与操作系统交互的接口,它接收用户输入的命令并将其传递给操作系统执行。常见的Shell类型有:

  • Bourne Shell(sh) :最早的Unix Shell,功能简单。
  • Bourne Again SHell(bash) :目前最常用的Shell,是sh的增强版,提供了更多的功能和更好的性能。
  • C Shell(csh)和TC Shell(tcsh) :语法类似于C语言,提供了更多的编程功能。
  • Z Shell(zsh) :功能强大且高度可定制的Shell,结合了bash和csh的优点。

(2)Shell的选择

在Linux系统中,可以通过/etc/passwd文件中的shell字段来设置用户的默认Shell。例如,将用户的默认Shell设置为zsh,可以编辑/etc/passwd文件,将用户的shell字段修改为/bin/zsh

此外,也可以在命令行中临时切换Shell。例如,输入zsh命令切换到zsh Shell,输入exit命令退出当前Shell返回到之前的Shell。

3. Shell脚本的基本语法和常用命令

(1)Shell脚本的基本结构

Shell脚本是以.sh为扩展名的文本文件,包含了一系列要执行的Shell命令。脚本的第一行通常是#!/bin/bash(或所选Shell的路径),这被称为shebang,用于指定脚本的解释器。

(2)变量

在Shell脚本中,变量用于存储数据。变量名区分大小写,赋值时不需要使用$符号,但在引用变量值时需要使用$符号。

bash复制代码
	#!/bin/bash

	# 定义变量

	name="Alice"

	# 引用变量值

	echo "Hello, $name!"

(3)循环

Shell脚本支持多种循环结构,包括for循环、while循环和until循环。

  • for循环
bash复制代码
	#!/bin/bash

	# for循环

	for i in 1 2 3 4 5

	do

	    echo "Number: $i"

	done
  • while循环
bash复制代码
	#!/bin/bash

	# while循环

	counter=1

	while [ $counter -le 5 ]

	do

	    echo "Counter: $counter"

	    ((counter++))

	done
  • until循环
bash复制代码
	#!/bin/bash

	# until循环

	counter=1

	until [ $counter -gt 5 ]

	do

	    echo "Counter: $counter"

	    ((counter++))

	done

(4)条件判断

Shell脚本中的条件判断通常使用if语句。条件判断可以是字符串比较、整数比较或文件测试。

  • 字符串比较
bash复制代码
	#!/bin/bash

	# 字符串比较

	str1="hello"

	str2="world"

	if [ "$str1" = "$str2" ]; then

	    echo "Strings are equal"

	else

	    echo "Strings are not equal"

	fi
  • 整数比较
bash复制代码
	#!/bin/bash

	# 整数比较

	num1=10

	num2=20

	if [ $num1 -lt $num2 ]; then

	    echo "$num1 is less than $num2"

	else

	    echo "$num1 is not less than $num2"

	fi
  • 文件测试
bash复制代码
	#!/bin/bash

	# 文件测试

	file="/path/to/file"

	if [ -e $file ]; then

	    echo "File exists"

	else

	    echo "File does not exist"

	fi
4. 编写简单的Shell脚本进行实践

下面是一个简单的Shell脚本示例,它演示了变量的使用、循环和条件判断。

脚本名称example.sh

bash复制代码
	#!/bin/bash

	# 示例Shell脚本

	 

	# 定义变量

	name="Bob"

	age=30

	 

	# 输出欢迎信息

	echo "Welcome, $name!"

	 

	# 循环输出1到5的数字

	for i in {1..5}

	do

	    echo "Number: $i"

	done

	 

	# 判断年龄是否大于25

	if [ $age -gt 25 ]; then

	    echo "$name is older than 25 years old."

	else

	    echo "$name is 25 years old or younger."

	fi

代码运行流程图

plaintext复制代码
	+-----------------------+

	|      开始             |

	+-----------------------+

	            |

	            v

	+-----------------------+

	| 定义变量 name 和 age  |

	+-----------------------+

	            |

	            v

	+-----------------------+

	| 输出欢迎信息          |

	+-----------------------+

	            |

	            v

	+-----------------------+

	| 循环输出1到5的数字    |

	+-----------------------+

	            |

	            v

	+-----------------------+

	| 判断年龄是否大于25    |

	+-----------------------+

	       /       \

	      v         v

	+---------------+  +---------------+

	| 输出年龄大于25|  | 输出年龄小于等于25|

	+---------------+  +---------------+

	            |

	            v

	+-----------------------+

	|      结束             |

	+-----------------------+

三、总结

通过第3天的学习,我们掌握了Linux进程管理和Shell脚本编写的基础。我们学会了如何启动、终止和调整进程的优先级,了解了Shell的类型和选择,学习了Shell脚本的基本语法和常用命令,并通过编写简单的Shell脚本进行了实践。这些知识将为我们后续深入学习Linux系统管理和编程打下坚实的基础。


以上内容详细介绍了第3天的学习目标、进程管理、Shell类型和选择、Shell脚本的基本语法和常用命令,以及一个简单的Shell脚本示例和代码运行流程图。希望这些内容能够帮助您更好地理解和掌握Linux进程管理和Shell脚本编写的基础知识。