哈喽大家好,今天更新Linux系统环境和shell脚本编程,让我们一起来学习一下吧。

这台服务器是256核,每核心支持2个线程,一共512个线程。
通俗理解“核心”和“线程数”:
核心:CPU内部真正执行计算任务的“大脑”。您可以把它想象成一个独立的、能同时处理一项任务的工人。
线程:工人手里同时处理的任务清单。
传统单线程核心:一个工人一次只专心做一项任务(1核1线程)。
支持超线程的核心(比如“2线程”):一个工人一次可以看两张任务清单(1核2线程)。当他在等待A任务的某个步骤(比如等材料送达)时,他可以转头去推进B任务。从管理者(操作系统)的角度看,这个工人就像能同时处理两个任务,效率更高了。



top类似于任务管理器,按q退出。

htop是top的升级版,需要管理员安装或者conda下载。

输出变量时变量前要加 $
用等号连接,不要有空格。



见上期推文Linux | 环境变量
## 结构for i in *list*do*commands*done## 实例:生成十个文件夹for i in {1..10} ##变量要加{},否则容易分辨不出变量。dotouch file${i}done##实例:将上面的十个文件夹都加上txt后缀for i in (ls file*) ##()可以替换为反引号``domv ${i}${i}.txtdone## 结构while *read id*do*commands*done##实例:将上面的十个文件夹都加上txt后缀ls file* | whileread iddomv ${id}${id}.txtdone##实例:将上面的十个文件夹删除txt后缀ls file* | whileread iddomv ${id}${id%.txt}done作用:删除一些特定内容
删除文件后缀名:

示例:

示例:

Shell脚本本质上就是一个 .sh 结尾的文本文件,里面按顺序写满了要给电脑执行的命令和逻辑。
通俗理解:
Shell脚本 = 厨师的“万能菜谱”
想象一下,你是一个忙碌的厨师(用户),厨房里有很多工具,比如锅、刀、炉子(电脑的硬件和核心功能)。你作为厨师,不能直接用手去操作炉火,你需要一个厨房控制台。这个控制台上有各种按钮、旋钮和语音指令,让你能控制所有厨具。Shell就是这个“厨房控制台”。它是一个程序,把你(用户)和复杂的厨房系统(操作系统内核)连接起来。你告诉它“开大火”、“切菜”,它就去执行。
现在,你发现每天早餐都要重复一套固定流程:开火 -> 热锅 -> 煎蛋 -> 关火 -> 装盘。每天手动操作一遍很麻烦。于是,你把这些步骤写在一张纸上,形成一个菜谱。以后只要说“做早餐”,整个流程就自动按顺序执行。这张写着步骤清单的纸,就是一个Shell脚本。“编程”,就是编写这个清单的过程。这个脚本里不仅可以写简单步骤,还可以有:
判断:如果冰箱里有面包,就烤两片,否则跳过。 循环:给10个人煎蛋,重复煎蛋步骤10次。 变量:把“客人数量”设为10,流程根据这个数字自动调整。
1. vim file1.sh ##vim生成文件,开始在里面写2. shebang,释伴:#!/usr/bin/env bash ##指定解释器,最好都写上。其内容是解释器的位置,可用which查找。通用释伴:#!/usr/bin/env bash#!/usr/bin/env python#!/usr/bin/env Rscript3. 正常写你需要实现的代码4. 退出5.bash file1.sh ##执行5. chmod 777 file1.sh ##添加权限,才能当命令使用6. ~/file1.sh ##当命令使用vim file2.sh ##先写一个脚本bash file2.sh 1>file2.log 2>file2.error ##前台运行脚本并创建工作日志,前台运行比较危险,网络断开等情况会导致工作中断htop -u t12345 ##查看我的用户t12345运行任务tail file2.log ##查看工作日志tail -f file2.log ##浮动查看工作日志,有更新就会加载出来nohup bash file2.sh & ##后台运行,会输出一个PID,作为任务的唯一标志符;所有日志都会记录在nohup.out,这个任务会运行完为止或出错为止nohup bash file2.sh > file2.log & ##若有多个任务需要挂后台,就要分别重定向日志文件,才不会把日志混在一个文件里ps -ef ##输出每个正在运行的命令的pidps -ef | grep $LOGNAME##输出每个正在运行的命令的id并查找自己的任务kill -9 PID ##命令行杀任务今天的分享就到这里啦,我们下期见
生信技能树课程