当前位置:首页>Linux>Linux | 系统环境和shell脚本编程

Linux | 系统环境和shell脚本编程

  • 2026-10-23 21:30:14
Linux | 系统环境和shell脚本编程

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

Linux系统环境

查看CPU信息:lscpu

这台服务器是256核,每核心支持2个线程,一共512个线程。

通俗理解“核心”和“线程数”:

核心:CPU内部真正执行计算任务的“大脑”。您可以把它想象成一个独立的、能同时处理一项任务的工人。

线程:工人手里同时处理的任务清单。

传统单线程核心:一个工人一次只专心做一项任务(1核1线程)。

支持超线程的核心(比如“2线程”):一个工人一次可以看两张任务清单(1核2线程)。当他在等待A任务的某个步骤(比如等材料送达)时,他可以转头去推进B任务。从管理者(操作系统)的角度看,这个工人就像能同时处理两个任务,效率更高了。

查看内存信息:free -h

查看硬盘信息:df -h

查看文件大小:du -h -d 1 或 du -sh~

查看系统进程和任务:top, htop

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

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

变量

输出变量时变量前要加 $

自定义变量

用等号连接,不要有空格。

环境变量

见上期推文Linux | 环境变量

结构化语句

循环语句for

## 结构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

## 结构while *read id*do*commands*done##实例:将上面的十个文件夹都加上txt后缀ls file* | whileread iddomv ${id}${id}.txtdone##实例:将上面的十个文件夹删除txt后缀ls file* | whileread iddomv ${id}${id%.txt}done

参数扩展

作用:删除一些特定内容

删除文件后缀名:

掐头去尾
参数拓展
含义
${变量#关键词}
删掉从头开始的符合格式的最短关键词
${变量##关键词}
删掉从头开始的符合格式的最长关键词
${变量%关键词}
删掉从尾开始的符合格式的最短关键词
${变量%%关键词}
删掉从尾开始的符合格式的最长关键词

示例:

新旧关键词替换
参数拓展
含义
${变量/旧字符串/新字符串}
替换首个旧字符
${变量//旧字符串/新字符串}
替换全部旧字符

示例:

shell脚本编程

定义

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 ##命令行杀任务

今天的分享就到这里啦,我们下期见

生信技能树课程

最新文章

随机文章