Linux 系统中的任务调度与数学运算技巧
在 Linux 系统中,任务调度和数学运算是常见且重要的操作。掌握相关工具和技巧,能让我们更高效地管理系统资源、处理数据。以下将详细介绍任务调度和数学运算的相关内容。
1. 任务调度
1.1 延迟执行命令
sleep
工具可用于延迟执行命令。它会等待指定的秒数,之后再执行后续命令。
-
操作步骤
:先给出要“休眠”的秒数作为
sleep
的参数,接着输入分号
;
和要执行的命令。
-
示例
:
- 5 秒后响铃:
$ sleep 5; echo -e '\a'
- 30 秒后播报时间:
$ sleep 30; saytime
- 还可以使用分钟、小时、天作为时间单位,示例如下:
$ sleep 5m; saytime &
1.2 定时执行命令
at
工具可用于定时执行命令。它接受一个精确的时间作为参数,然后从标准输入读取命令。
-
操作步骤
:
1. 输入
at
及要执行命令的时间。
2. 从 “at>” 提示符开始输入命令,按
Ctrl + D
结束输入。
-
示例
:
- 今天下午 5 点 05 分给自己发邮件提醒:
$ at 17:05
warning: commands will be executed using /bin/sh
at> mail chuck -s "IT'S TIME TO GO!" < /dev/null
at> Ctrl + D <EOT>
job 5 at 2003 - 08 - 09 17:05
$
-
明天晚上 9 点调度
~/bin/clean和~/bin/tidy执行:
$ at 9pm tomorrow
warning: commands will be executed using /bin/sh
at> ~/bin/clean
at> ~/bin/tidy
at> Ctrl + D <EOT>
job 6 at 2003 - 08 - 09 17:10
$
- 也可以从文件中指定要执行的命令列表,示例如下:
$ at -f extra.work midnight
1.3 查看和删除定时任务
-
查看任务
:使用
atq命令列出at队列中的所有任务,它会显示任务编号、日期、时间和任务类别。
$ atq
-
删除任务
:使用
atrm命令删除指定编号的任务。
atrm 3
1.4 定期执行命令
可以使用系统的
cron
工具定期执行命令。每个定期执行的命令称为一个
cron
作业,所有的
cron
作业列表存储在
cron
表中,该表从
crontab
文件读取。
-
crontab
文件格式
:
| 字段 | 含义 | 取值范围 |
| ---- | ---- | ---- |
| minute | 分钟 | 0 - 59 |
| hour | 小时 | 0 - 23 |
| day of month | 每月的第几天 | 1 - 31 |
| month | 月份 | 1 - 12 或英文缩写 |
| day of week | 星期几 | 0 - 7(0 和 7 都表示周日)或英文缩写 |
| command | 要执行的命令 | - |
-
示例
crontab
文件
:
# This is my sample crontab file.
# Runs the 'foo' command at noon every single day.
0 12 * * * foo
# Runs the 'bar' command at 1:23 in the morning on every day in June.
23 1 * Jun * bar
# Runs the 'foobar' command at half - past four and five p.m. every Monday
# through Wednesday whose day of the month is between 1 and 14.
30 16,17 1 - 14 * Mon - Wed foobar
-
管理
cron作业 : -
添加作业
:修改
crontab文件后,使用crontab命令更新cron表。
$ crontab cron.txt
-
删除作业
:使用
crontab -r命令删除整个cron表。
$ crontab -r
-
查看作业
:使用
crontab -l命令列出所有cron作业。
$ crontab -l
1.5 定期观察命令输出
watch
工具可用于定期观察命令的输出。它会每隔 2 秒重复执行指定的命令,并更新显示结果。
-
操作步骤
:
- 基本用法:输入
watch
及要执行的命令。
- 修改更新间隔:使用
-n
选项指定间隔时间。
- 突出显示差异:使用
-d
选项。
-
示例
:
- 每 2 秒查看当前目录详细内容:
$ watch ls -l
- 每秒查看当前目录详细内容:
$ watch -n 1 ls -l
- 每 10 秒查看当前目录详细内容,并突出显示差异:
$ watch -d -n 10 ls -l
2. 数学运算
2.1 快速算术计算
对于简单的加减乘除运算,可以使用 Bash 的内置算术评估功能。也可以创建一个名为
calc
的脚本:
#!/bin/sh
echo $(( expression = $ ))
-
操作步骤
:安装脚本后,将需要计算的表达式作为
calc的参数。 - 示例 :
- 计算 50 乘以 10:
$ calc 50*10
- 计算 100 乘以(4 + 420):
$ calc '100*(4 + 420)'
- 计算 10 除以 3 的余数:
$ calc 10%3
2.2 使用计算器
bc
bc
是一个支持任意精度数字、脚本、变量、函数和代数语句的计算语言。
-
操作步骤
:
1. 输入
bc
启动计算器。
2. 逐行输入要计算的表达式,按回车键执行。
3. 输入
quit
退出。
-
示例
:
- 计算 42 乘以 17:
$ bc
bc 1.06
Copyright 1991, 1992, 1993, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
42 * 17
714
quit
$
- 计算 10 除以 3,保留 20 位小数:
$ bc
bc 1.06
Copyright 1991, 1992, 1993, 1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
scale = 20
10 / 3
3.33333333333333333333
quit
$
- 常用选项 :
-
-l选项:启动时设置精度为 20,并加载一些数学函数。 -
-q选项:抑制启动时的版权和保修信息。
alias bc='/usr/bin/bc -ql'
2.3 输出随机数
可以通过显示
RANDOM
变量的内容来获取随机数,它会输出一个 0 到 32767 之间的随机整数。
-
操作步骤
:
- 输出一个随机数:
$ echo $RANDOM
- 输出 0 到 9 之间的随机数:
$ echo $(( $RANDOM % 10 ))
2.4 列出数字序列
seq
工具可用于打印数字序列。
-
操作步骤
:
- 输出从 1 到指定数字的序列:
$ seq 7
- 输出从一个数字到另一个数字的序列:
$ seq 9 0
- 指定增量:
$ seq -1 3 14
- 填充前导零:
$ seq -w 9 23 999
- 指定分隔符:
$ seq -s ' ' 1 23
- 将数字序列作为参数传递给命令:
$ cat `seq -s " " 25 75` > selected - mail
2.5 查找质因数
factor
工具可用于计算并输出给定数字的质因数。
-
操作步骤
:将需要计算质因数的数字作为
factor
的参数。
-
示例
:
$ factor 2000
2.6 单位和数字转换
2.6.1 单位转换
units
工具可用于在不同的测量单位之间进行转换。
-
操作步骤
:给出两个带引号的参数,分别是要转换的值和单位,以及目标单位。
-
示例
:
- 将 50 克转换为盎司:
$ units '50 grams' 'ounces'
-
查看
units数据库的位置:
$ units -V
2.6.2 阿拉伯数字转换为英文
使用
number
工具可将阿拉伯数字转换为英文文本。
-
操作步骤
:将需要转换的数字作为
number
的参数。
-
示例
:
$ number 100000
2.7 加密
2.7.1 rot13 加密
rot13
加密是将字母表中的每个字母旋转 13 位。有两种主要的编码和解码方法:
-
方法一:使用
tr
工具
-
编码
:
$ tr [a - mn - zA - MN - Z] [n - za - mN - ZA - M] < script > secret.script
- 解码 :
$ tr [a - mn - zA - MN - Z] [n - za - mN - ZA - M] < secret_message
-
方法二:使用
rot13工具 - 编码 :
$ rot13 < message > secret_message
- 解码 :
$ rot13 < secret_message
2.7.2 gpg 加密
gpg
是一个公钥加密系统。
-
操作步骤
:
1. 生成密钥:
$ gpg --gen - key
- 导出公钥:
$ gpg -a --export > alice.key
- 导入他人公钥:
$ gpg --import bill.key
- 加密文件:
$ gpg -e bill@example.net < mission
- 生成装甲文件:
$ gpg --armor -e bill@example.net < mission
- 解密文件:
$ gpg -d < secret.and.urgent
2.8 数据绘图
gnuplot
是一个多功能的绘图工具,可用于绘制 2D 和 3D 图形、轮廓、表面和函数。
2.8.1 绘制单数据集图形
-
操作步骤
:
1. 在数据文件中给出 x 和 y 轴的值。
2. 使用以下命令运行gnuplot:
plot "inputfile" using 1:2 with plotstyle
- 示例 :
-
有一个名为
temperature.data的文件,内容如下:
January 68.9
February 68.7
March 69.0
April 70.2
May 72.0
June 73.4
July 74.3
August 75.8
September 74.6
October 73.8
November 71.8
December 70.1
-
有一个名为
temperature.gnuplot的文件,内容如下:
set title "Mean Monthly Temperatures for Hawaii, 1905 - 1938"
set xlabel "Month"
set ylabel "Temperature"
set nokey
set xdata time
set timefmt "%B"
set format x "%b"
set nomxtics
set terminal postscript color
set output "temps.ps"
plot "temperature.data" using 1:2 with linespoints
- 执行命令:
$ gnuplot temperature.gnuplot
2.8.2 绘制多数据集图形
-
操作步骤
:在数据文件中给出 x 轴和多个 y 轴的值,使用以下命令运行
gnuplot:
plot "inputfile" using 1:plot title titlename with plotstyle
- 示例 :
-
有一个名为
temperature2.data的文件,内容如下:
#Month Honolulu Tampa New York
January 73 60 32
February 73 61 33
March 74 66 41
April 76 72 53
May 78 77 62
June 79 81 71
July 80 82 77
August 81 82 75
September 81 81 68
October 80 74 58
November 77 67 47
December 74 61 36
-
有一个名为
temperature2.gnuplot的文件,内容如下:
set title "Mean Monthly Temperatures for Company Locations"
set xlabel "Month"
set ylabel "Temperature"
set xdata time
set timefmt "%B"
set format x "%b"
set nomxtics
set terminal postscript landscape color
set output "temps2.ps"
plot "temperature2.data" using 1:2 title "Honolulu" with linespoints,
"" using 1:3 title "Tampa" with linespoints, "" using 1:4 title "New York" with linespoints
- 执行命令:
$ gnuplot temperature2.gnuplot
2.9 其他数学工具
| 工具名称 | 描述 |
|---|---|
| Calc | Emacs 的科学计算器工具 |
| Desk Calculator | 从标准输入读取并输出到标准输出的任意精度计算器 |
| Dome | 计算测地圆顶的属性 |
| GnuCash | 直观的个人财务应用程序 |
| Gnumeric | 类似于 Excel 的强大电子表格应用程序 |
| Oleo | 小型的 GNU 电子表格应用程序 |
| Piechart | 辅助使用 GNU 绘图实用程序制作图形饼图 |
| Plotutils | GNU 绘图程序包 |
| Sc | 在控制台运行的电子表格工具 |
| Sieb | 快速计算素数的 C 程序 |
| Xcalc | X 窗口系统的可视化科学计算器 |
| Xspread | sc 的 X 客户端前端 |
2.9 其他数学工具
| 工具名称 | 描述 |
|---|---|
| Calc | Emacs 的科学计算器工具 |
| Desk Calculator | 从标准输入读取并输出到标准输出的任意精度计算器 |
| Dome | 计算测地圆顶的属性 |
| GnuCash | 直观的个人财务应用程序 |
| Gnumeric | 类似于 Excel 的强大电子表格应用程序 |
| Oleo | 小型的 GNU 电子表格应用程序 |
| Piechart | 辅助使用 GNU 绘图实用程序制作图形饼图 |
| Plotutils | GNU 绘图程序包 |
| Sc | 在控制台运行的电子表格工具 |
| Sieb | 快速计算素数的 C 程序 |
| Xcalc | X 窗口系统的可视化科学计算器 |
| Xspread | sc 的 X 客户端前端 |
这些工具在不同的数学计算场景中都有各自的优势,用户可以根据自己的需求进行选择。例如,如果你是 Emacs 的用户,Calc 可能是一个很好的选择;如果你需要进行个人财务管理,GnuCash 会是一个不错的工具。
3. 总结与应用建议
3.1 总结
本文详细介绍了 Linux 系统中任务调度和数学运算的多种工具和方法,包括任务的延迟执行、定时执行、定期执行,以及数学计算、加密、绘图等方面的操作。以下是对这些内容的简要总结:
-
任务调度
:
-
sleep
用于延迟执行命令。
-
at
用于定时执行命令,可从标准输入或文件获取命令。
-
cron
用于定期执行命令,通过
crontab
文件管理作业。
-
watch
用于定期观察命令输出。
-
数学运算
:
- 简单算术可使用 Bash 内置功能或
calc
脚本。
-
bc
是强大的任意精度计算器。
-
seq
用于生成数字序列。
-
factor
用于查找质因数。
-
units
用于单位转换,
number
用于数字转英文。
- 加密方面,
rot13
用于简单加密,
gpg
是公钥加密系统。
-
gnuplot
用于数据绘图。
3.2 应用建议
- 任务调度 :
-
如果需要临时执行一次任务,可使用
at。 -
对于定期执行的任务,如系统维护、数据备份等,使用
cron更合适。 - 在执行延迟任务时,为避免占用当前 shell,可在新的终端窗口中执行。
- 数学运算 :
-
简单计算优先使用 Bash 内置功能或
calc脚本。 -
复杂计算或需要高精度时,使用
bc。 -
加密时,
rot13适用于临时隐藏信息,gpg用于安全通信。
3.3 操作流程总结
为了更清晰地展示这些工具的使用流程,下面给出几个常见操作的流程图。
3.3.1
at
定时任务执行流程
graph LR
A[输入 at 及时间] --> B[输入命令]
B --> C[按 Ctrl + D 结束输入]
C --> D[任务调度执行]
3.3.2
bc
计算流程
graph LR
A[输入 bc 启动] --> B[输入表达式]
B --> C[按回车键计算]
C --> D{是否继续}
D -- 是 --> B
D -- 否 --> E[输入 quit 退出]
3.3.3
gpg
加密流程
graph LR
A[生成密钥] --> B[导出公钥]
B --> C[导入他人公钥]
C --> D[加密文件]
D --> E[解密文件]
通过这些工具和方法,用户可以更高效地管理系统任务和进行数学计算,提高工作效率和数据处理能力。希望本文的内容能对 Linux 用户有所帮助。
超级会员免费看

579

被折叠的 条评论
为什么被折叠?



