Linux 几类重要的命令
由于压缩解压、网络文件传输和定时任务都是实践中很常见的操作,这里进行更详细的命令介绍。
命令速查
打包并压缩 123tar -zcvf archive.tar.gz file1 file2 directorytar -jcvf archive.tar.bz2 file1 file2 directorytar -Jcvf archive.tar.xz file1 file2 directory
解压缩并解包 123tar -zxvf archive.tar.gztar -jxvf archive.tar.bz2tar -Jxvf archive.tar.xz
解压缩并解包到指定位置 123tar -zxvf archive.tar.gz -C /path/to/destinationtar -jxvf archive.tar.bz2 -C /path/to/destinationtar -Jxvf archive.tar.xz -C /path/to/destination
压缩解压
zip
zip和unzip命令用于创建和解压缩.zip格式的压缩文件。
压缩文件的基本使用如下:创建一个 ...
Linux PBS作业脚本
基本介绍
PBS脚本是一种特殊的shell脚本:
以#开头的行被bash视作注释
以#PBS开头的行被PBS系统识别为运行参数
可以直接调用shell命令和系统命令(shell命令的规则比较奇怪,某些情况下甚至对空格是敏感的)
脚本可以使用.sh或.pbs后缀
脚本无需使用+x赋予执行权限
通常的PBS脚本结构为:
通常的 shell 脚本开头 #!/bin/bash(可选)
#PBS选项部分
切换到工作目录(PBS 作业脚本默认会在用户家目录启动)
计算前的信息输出(可选)
计算指令(注意当前位置和可执行文件/脚本的相对位置)
计算后的信息输出(可选)
PBS选项
在PBS脚本中支持很多选项,常用选项包括:
-N name 作业的名称(至多 15
个英文字符,不允许含空格)
-q queue 指定作业队列
-l 申请作业所需的计算资源
-l nodes=N:ppn=M 要求使用 N 个节点,每个节点 M
个核(可以直接占满一个节点的所有核)
-l walltime=24000:00:00 要求使用 24000
小时(时间可以设置地足够长)
-l mem=100gb 要求使 ...
Linux 服务器集群管理
这部分内容通常都需要root权限,普通用户是不允许操作的,除了修改自身密码。
用户管理
添加普通用户的过程比较繁琐,至少包括如下几个部分:
添加用户(创建用户,组,密码)
更新 nis 数据库
ssh配置:(注意到所有节点都共享/home目录,因此这个过程实际上简化了很多)
在~/.ssh/生成密钥对
将公钥添加到~/.ssh/authorized_keys,并确保其具有正确的644权限
将模板known_hosts复制给新用户,其中保存了当前集群的所有节点的公钥指纹
确保~/.ssh/的所有者和所在组为新用户
将模板.bashrc复制到新用户家目录下,并修改其所有者和所在组
添加新用户的my_adduser.sh脚本是在原始脚本基础上修改的,放在fenglielie/scripts仓库,便于版本控制。
删除普通用户但保留家目录,加上 –r
选项可以附带删除家目录,这和普通Linux系统没什么区别 12userdel test1userdel –r test1
可以附带更新 nis 数据库 1cd /var/yp && make
修改密码
下面对密码的修改都 ...
Linux 服务器集群与PBS作业系统
服务器集群
基本介绍
当前的服务器集群主要包括一个登陆节点 mu01(管理节点)和 20 个计算节点
cu01,cu02,...,cu20,分成两个队列
cu1 队列 cu01-10,cu15-20,每个节点有28核
cu2 队列 cu11-14,每个节点有16核
登陆节点和计算节点关系如下图(实际只部署了一个登陆节点,同时作为唯一的管理节点)
集群中两个队列的节点分别使用了不同的Intel处理器,将其与一个笔记本上较新的AMD处理器的主要指标进行对比
处理器
总核心数
主频
三级缓存
架构
Intel Xeon E5-2680 v4
28 核
2.4 GHz
35 MB
Broadwell-EP (22nm)
Intel Xeon E5-2667 v4
16 核
3.2 GHz
25 MB
Broadwell-EP (22nm)
AMD Ryzen 9 7940H
8 核
4.0 GHz
16 MB
Zen 4 (7nm)
其中:
主频:指每秒处理器执行指令的速度,高主频有利于快速执行单线程任务和串行计算。
核心数:决定处理器同时执行 ...
Linux 基础学习笔记
目录结构
各种 Linux 系统有着大致统一的标准目录结构:(FHS)
/ 根目录
可执行文件目录
/bin,/sbin
存放系统层面所必需的可执行文件,例如cp、ls等,其中/sbin存放的是需要root权限的部分
/usr/bin,/usr/sbin
存放用户层面的可执行文件,例如git、wget等
库目录
/lib
存放系统层面所必需的的动态库,理论上是为/bin和/sbin准备的,此外/lib/modules还存放内核模块
/usr/lib
存放用户层面的动态库,理论上是为/usr/bin和/usr/sbin准备的
除了lib,可能还有lib32,lib64,作用类似
/usr/local
(重要)存放管理员安装的程序,与使用apt等命令直接安装的不同,这里通常是手动编译安装的软件,这个目录很重要,下面单独讨论
用户家目录(重要)
/root root 用户的家目录
/home 一般用户的家目录的父目录
/home/abc 名为 abc 的用户的家目录
/opt
(重要)一般用于安装第三方提供的,可选的大型应用程序
/etc
(重要)存放系统的配置文件和脚本, ...
Stokes方程组与Lagrange乘子法
在前文中介绍了泛函语境下的 Lagrange
乘子法,接下来将它应用中不可压流的 Stokes 方程组中。
1. Stokes 方程组
1.1 原始方程组
不可压缩蠕动流满足如下的方程组
\[
\begin{aligned}
-\Delta u + \nabla p &= f\\
\nabla \cdot u &= 0\\
u|_{\partial \Omega} &= 0
\end{aligned}
\]
其中\(\Omega\)是有界区域,为了后续的讨论,我们定义如下空间
\[
\begin{aligned}
V &= [H_0^1(\Omega)]^n \\
Z &= \{v \in V | \nabla \cdot v = 0\}\\
\widetilde{L}^2(\Omega) &= \{q \in L^2(\Omega)| \int_{\Omega} q =
0\}
\end{aligned}
\]
1.2 虚功原理
将 Stokes 方程组转化为如下的变分形式(物理上也称为虚功原理):
(A1) find \(u \in ...
泛函中的Lagrange乘子法
1. 经典的 Lagrange 乘子法
经典的 Lagrange
乘子法是针对等式约束下的非线性方程最优化问题,将其转化为一个方程组的求解问题,具体形式如下:
\[
\left\{
\begin{aligned}
&\max f(\mathbf{x})\\
&s.t. g(\mathbf{x})=0
\end{aligned}
\right.
\]
其中\(\mathbf{x}\in R^N\),\(f,g:R^N \to R\),对于上述问题引入 Lagrange
乘子\(\lambda \in R\),定义 Lagrange
函数\(L(\mathbf{x},\lambda)\):
\[
L(\mathbf{x},\lambda) = f(\mathbf{x}) - \lambda \,g(\mathbf{x})
\]
则\(\mathbf{x}\)取到最优解的必要条件为\((\mathbf{x}, \lambda)\)满足如下方程组:
\[
\left\{
\begin{aligned}
\nabla f(\mathbf{x}) - \lambda \nabla ...
vim入门笔记
vim
被称为编辑器之神,学习难度很大,但是熟练掌握后可以更高效地敲代码,因此学一下。
1 安装与配置文件
vim 默认是命令行版本的,而 gvim 是 GUI 版本的 vim,这里我们使用的是
Git for windows 里面附带的 vim(不含 GUI),可以按 Linux
风格进行配置和使用,感觉比直接下载Vim
官网的 windows 版的 gvim 更方便,便于直接把配置应用到到 Linux
服务器上。
在 vim 中输入:version可以查看很多信息,例如
1234567// vim的版本号VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Nov 22 2021 19:31:05)Included patches: 1-3582Compiled by <https://www.msys2.org/>// vim的安装模式(tiny,small,normal,big,huge等,huge的功能最全)Huge version without GUI.
还有一个列表描述了当前编译的 vim
支持或不支持的功能列表,例如+c ...
web自学3——JavaScript
在简单学习了 HTML 和 CSS 之后,接下来是 JavaScript
的学习,学习的重点不是 JavaScript 作为一个脚本语言的语法内容,而是
JavaScript 对于网页的控制,参考教程:https://developer.mozilla.org。
HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为
1. 在 HTML 中使用 JS
在 HTML 和 CSS 一起组装成一个网页之后,浏览器的 JavaScript 引擎将执行
JavaScript 代码,这保证了当 JavaScript
开始运行之前,网页的结构和样式已经就位,然后 JS
可以更新这个网页的具体内容等。
对于浏览器,它的每一个标签页使用了一个独立的运行环境,不同标签页之间没有任何联系,JS
代码也相互独立运行,一定程度上保证了信息安全。
script 标签
在 HTML 的 head 或者 body 部分都可以使用,例如:
12345678910111213<!DOCTYPE html><html lang="en"> ...
web自学2——CSS
在简单学习了 HTML
之后,我们可以得到一个简单的静态网页,但是为了让网页呈现更加丰富的样式,一个明智的做法把样式信息和文本信息分离开,文本信息对应
HTML,样式信息对应 CSS,完成一个网页的组织分离,接下来是 CSS
的简单学习,参考教程:https://developer.mozilla.org
HTML 定义了网页的内容
CSS 描述了网页的布局
JavaScript 控制了网页的行为
CSS
1. 在 HTML 中使用样式
我们最终的目标是把 CSS 文件和 HTML
文件结合起来,但是在此之前,还有一些方法可以直接在 HTML
文件中使用简单的样式:
style 属性
例如添加背景色 background-color,
可以直接使用元素的style属性定义的样式
源代码如下:
1<p style="background-color: #00BFFF">可以直接使用元素的style属性定义的样式</p>
嵌入 CSS 语句
我们使用如下简单的 html
文件,在头部使用<style type="text/css"& ...