Linux入门-常用方法

生信编程的笔记,我学完意识到Linux是一个系统加shell编程语言,这个笔记重点在如何使用linux系统,学在linux系统中如何找到文件、查看文件、打开文件、以及运行它等等,还有如何查看linux系统中的任务管理器等基本操作,对于shell脚本编程和vim只简单涉及。

如果你只是想和使用windows一样使用linux系统,这篇文章应该对你有帮助。本文只整理了最常用(课上)的命令,如果想看更多更详细的命令,请走传送门,或者百度(本文很多命令的总结也是百度、菜鸟上的)

Linux命令大全(手册) - 真正好用的Linux命令在线查询网站www.linuxcool.com/

linux简介

linux远程登录(windows使用MobaXterm登录)

目录与文件

目录查看与切换

ls(列出目录):

-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)

-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

-h 可以将字节文件转换为kb,Mb的形式,human readable

-r 将文件以相反次序显示(原定依英文字母次序)

-t 将文件依建立时间之先后次序列出

-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)

-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"

-R 若目录下有文件,则以下之文件亦皆依序列出(树结构列出)

cd(切换目录):

可以使用绝对路径也可以使用相对路径cd 返回家目录cd ~ 与上同cd .. 返回上一级目录

pwd(显示当前目录,绝对路径名称):

-P:print the physical directory, without any symbolic links

目录创建,删除,移动复制(文件)

mkdir(创建新目录):

-m配置文件的权限

shell -m 711 test1

-p将所需的文件递归创建
mkdir -p test1/test2/test3/test4

rmdir (删除空的目录):

-p:连同上一级空的目录也一起删除,非空的保留
rmdir -p test1/test2/test3/test4

rm(删除文件目录):

-rf 删除文件(包含文件也可删除)-f:强制删除,不会出现警告信息-i:删除前需确认-r:递归删除目录及文件

cp(赋值文件或目录):cp [options] source1 source2... Directory

-a:相当于 -pdr-p:连同文件的属性(修改日期等)一起复制过去-d:复制连接档属性而非文件本身 -r:递归持续复制,用于目录的复制行为

-i:当目标存在时,询问是否覆盖(只有文件才会询问,目录报错)

-f:不询问直接覆盖,与i相反软链接相当于windows中的快捷方式。硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响到另一处的数据.-l:复制称为硬连接文件-s:复制称为软连接文件

文件的基本属性

先知道有这些权限,后面会懂
ls -l drwxr-xr-x 1 root root 512 Sep 26 09:21 QIIME2ChineseManual -rw-r--r-- 2 root root 0 Nov 12 17:37 file1 -rw-r--r-- 2 root root 0 Nov 12 17:37 file2 drwxr-xr-x 1 root root 512 Nov 12 17:37 test1

文件读取

cat # 由第一行开始希纳是文件内容 more #一页一页显示文件内容 less #类似more,可以往前翻页 head -n file #显示开头n行 tail -n file #显示末尾n行

文件写入

echo "hello world" >> file

文件类型

纯文本文件(ASCII)、二进制文件、数据格式文件

查看文件类型

file install.log install.log: UTF-8 Unicode text file -b install.log <== 不显示文件名称 UTF-8 Unicode text file -i install.log <== 显示MIME类别。 install.log: text/plain; charset=utf-8 file -b -i install.log text/plain; charset=utf-8 -b  列出辨识结果时,不显示文件名称。 -c  详细显示指令执行过程,便于排错或分析程序执行的情形。 -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。 -L  直接显示符号连接所指向的文件的类别。 -m<魔法数字文件>  指定魔法数字文件。 -v  显示版本信息。 -z  尝试去解读压缩文件的内容。 [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

文件搜索

whereis [file_name]:该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

whereis bash # 可以查找指令所在位置 -b  只查找二进制文件。 -B<目录>  只在设置的目录下查找二进制文件。 -f  不显示文件名前的路径名称。 -m  只查找说明文件。 -M<目录>  只在设置的目录下查找说明文件。 -s  只查找原始代码文件。 -S<目录>  只在设置的目录下查找原始代码文件。 -u  查找不包含指定类型的文件。

locate [keyword]:查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录,一般情况我们只需要输入 locate your_file_name 即可查找指定文件。

locate passwd # 查找 passwd 文件

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。知道一部分路径进行查找效率最高

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb

find [PATH] [option] [action]:Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket find . -name "*.c" # 将当前目录及其子目录下所有文件后缀为 .c 的文件列出来: # find . -type f # 将当前目录及其子目录中的所有文件列出:

文件链接

ln 命令可以创建文件链接https://www.runoob.com/linux/linux-comm-ln.html,主要是创建软链接和硬链接,硬链接只能对文件创建,但也可以提高权限创建目录硬链接

ln -s log2013.log link2013 # 为log2013.log创建软链接 ln log2013.log link2013 # 创建硬链接

创建文件

touch命令:Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。https://www.runoob.com/linux/linux-comm-touch.html

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…] -a 改变档案的读取时间记录。 -m 改变档案的修改时间记录。 -c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。 -f 不使用,是为了与其他 unix 系统的相容性而保留。 -r 使用参考档的时间记录,与 --file 的效果一样。 -d 设定时间与日期,可以使用各种不同的格式。 -t 设定档案的时间记录,格式与 date 指令相同。 --no-create 不会建立新档案。 --help 列出指令格式。 --version 列出版本讯息。 touch file # 创建文件

文本比较

diff:比较文本的差异。diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。

diff text1 text2

文件监控(大小查询)

du -h file/dic # 查询文件/目录大小 df -h # 查询文件系统大小

文件压缩与解压

文件的压缩与解压用例子的部分来介绍,其主要是用来用的

gzip

gunzip是个使用广泛的解压缩程序,它用于解开被 gzip 压缩过的文件,这些压缩文件预设最后的扩展名为 .gz。事实上 gunzip 就是 gzip 的硬连接,因此不论是压缩或解压缩,都可通过 gzip 指令单独完成。

:压缩后会多出“.gz”的拓展名

-a或--ascii  使用ASCII文字模式。-c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。-d或--decompress或----uncompress  解开压缩文件。-f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。-h或--help  在线帮助。-l或--list  列出压缩文件的相关信息。-L或--license  显示版本与版权信息。-n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。-N或--name  压缩文件时,保存原来的文件名称及时间戳记。-q或--quiet  不显示警告信息。-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。-S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。-t或--test  测试压缩文件是否正确无误。-v或--verbose  显示指令执行过程。-V或--version  显示版本信息。-<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。--best  此参数的效果和指定"-9"参数相同。--fast  此参数的效果和指定"-1"参数相同。
gzip * # 压缩当前目录下的所有文件 gzip -l * # 显示压缩文件的信息 gzip -dv * # 解压当前目录下的所有文件,并列出详细信息

zcat

:不真正解压缩文件,就能显示压缩包中文件的内容的场合(限gzip压缩)

-S:指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项; -c:将文件内容写到标注输出; -d:执行解压缩操作; -l:显示压缩包中文件的列表; -L:显示软件许可信息; -q:禁用警告信息; -r:在目录上执行递归操作; -t:测试压缩文件的完整性; -V:显示指令的版本信息; -l:更快的压缩速度; -9:更高的压缩比。 (base) root@LAPTOP-AHHNRE3A:~/github# zcat a.cpp.gz hello world

bzip2

:是.bz2文件的压缩程序。bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。

-c或--stdout  将压缩与解压缩的结果送到标准输出。-d或--decompress  执行解压缩。-f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。-h或--help  显示帮助。-k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。-s或--small  降低程序执行时内存的使用量。-t或--test  测试.bz2压缩文件的完整性。-v或--verbose  压缩或解压缩文件时,显示详细的信息。-z或--compress  强制执行压缩。-L,--license,-V或--version  显示版本信息。--repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。--repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。-压缩等级  压缩时的区块大小。
bzip2 -z FileName # 压缩 bzip2 -d FileName.bz2 # 解压

bzcat

:查看.bz2文件

tar

:命令用于备份文件。tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。多文件压缩命令

使用方法:

# tar -[z|j] -cv -f [新建文件名] [被压缩的多文件] -z # 通过gzip指令处理备份文件。gz 默认是gz压缩 -j # 通过bzip2指令处理备份文件。bz2 -X # 解压文件 -f # 指定备份文件 -c # 创建新的压缩文件 -v # verbose - 显示压缩过程 # 注意: # 压缩不会删除原文件 # 必须有 -cf ,即指定新的文件名,并且需要指定文件名全称 echo "123" >> 123.txt echo "1234" >> 1234.txt # 压缩 tar -zvcf 123.tar.bz2 *.txt rm *.txt ls # 结果为 123.tar.bz2 tar -xf 123.tar.bz2

文本编辑

Vim

:Linux 内置编辑器;vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站 (http://www.vim.org

) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

vim 123.txt # 创建文本并编辑

系统进程管理

用户管理(没有用过)

id 命令查看用户的UID和GID

root:(账号名称):x(:账号密码):0(:账号UID):0(:账号GID):root(:用户说明):/root(:用户家目录):/bin/bash(:shell解析)

1、账号名称:和用户UID对应,这是用户登录时使用的账号名称,在系统中是唯一的,不能重复。

2、账号密码:早期的Unix系统中,该字段是存放账号密码的,由于安全原因,后来把这个密码字段内容移动到/etc/shadown中,这里可以看到一个字母表示该用户密码在/etc/shadown中保护

3、账户UID:用户ID,账号UID一般由一个整数表示的,范围是0~65535。

4、账户GID:组ID,账号GID一般也是由一个整数表示的,范围是0~65535,当添加账户时,默认情况下会同时建立一个与用户同名且UID和GID相同的组。

5、用户说明:这个字段是对这个账号二队描述说明。

6、用户家目录:用户登录后首先进入的目录,一般为(/home/用户名)这样的目录

whoami:查看自己用户名称

who:查看所有用户

w:和who相似,但更详细

用户权限

用户与 /home 的关系

/home 目录下有很多用户的目录每个用户一般只能操控自己目录下的数据

文件的用户权限修改:

chgrp 这是管理员的操作命令,而且需要提前学习linux的文件系统知识

:用于变更文件或目录的所属组群,允许普通用户改变文件所属的组,只要该用户是该组的一员

chgrp -v 组 log2012.log

chmod

:控制用户对文件的权限的命令

# 语法 chmod [-cfvR] [--help] [--version] mode file... # mode 权限设定字串 [ugoa...][[+-=][rwxX]...][,...]
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

-c : 若该文件权限确实已经更改,才显示其更改动作-f : 若该文件权限无法被更改也不要显示错误讯息-v : 显示权限变更的详细资料-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)--help : 显示辅助说明--version : 显示版本
echo "Hello">>123.txt # 所有用户可读 chmod ugo+r 123.txt chmod a+r 123.txt # 设置与所属同一个群体者可以写入,但其他以外的人则不可写入 chmod ug+w,o-w 123.txt # 创建一个.py文件,并修改为可执行文件,再用python执行 echo "print(123)">>123.py chmod u+x 123.py python 123.py 123 # 结果 # 将目前目录下的所有文件与子目录皆设为任何人可读取 chmod -R a+r * # 用数字表示权限 chmod 777 123.py # 还可以使用等号 chmod ug=rwx,o=x file

chown 需要超级用户 root 的权限才能执行此命令。

:利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。

用户切换

su

:切换用户;用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh-m -p 或 --preserve-environment 执行 su 时不改变环境变数-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell--help 显示说明文件--version 显示版本资讯- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 rootUSER 欲变更的使用者帐号ARG 传入新的 shell 参数
# 变更账号为 root 并执行 ls 指令后退出变回原使用者 su -c ls root # 变更账号为 root 并传入 -f 参数给新执行的shell su root -f # 变更账号为 tb 并改变工作目录至 tb 的家目录 su - tb hnlinux@runoob.com:~$ whoami //显示当前用户 hnlinux hnlinux@runoob.com:~$ pwd //显示当前目录 /home/hnlinux hnlinux@runoob.com:~$ su root //切换到root用户 密码: root@runoob.com:/home/hnlinux# whoami root root@runoob.com:/home/hnlinux# pwd /home/hnlinux

sudo

:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

-V 显示版本编号-h 会显示版本编号及指令的使用方式说明-l 显示出自己(执行 sudo 的使用者)的权限-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)-b 将要执行的指令放在背景执行-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell-H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
# 指定用户执行命令 sudo -u userb ls -l

用户增加和修改:主要用于服务器操作与管理

useradd:增加用户passwd:修改密码usermod:修改用户userdel:删除用户
# 还不会,但暂时不需要

进程管理

关机和重启

这些也是服务器管理中用的命令行,需要最高权限

shutdown:关闭已启动的任务,然后关机

reboot:重启

halt:不理会系统状态,直接关机

进程管理

top

:查看动态进程

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 sp:显示指定的进程信息q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来s : 安全模式,将交谈式指令取消, 避免潜在的危机i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程n : 更新的次数,完成后将会退出 topb : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
# 显示指定的进程信息 top -p 139

ps

:查看当前时间点进程

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-A 列出所有的进程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的行程,输出格式:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者PID: pid%CPU: 占用的 CPU 使用率%MEM: 占用的记忆体使用率VSZ: 占用的虚拟记忆体大小RSS: 占用的记忆体大小TTY: 终端的次要装置号码 (minor device number of tty)STAT: 该行程的状态:D: 无法中断的休眠状态 (通常 IO 的进程)R: 正在执行中S: 静止状态T: 暂停执行Z: 不存在但暂时无法消除W: 没有足够的记忆体分页可分配<: 高优先序的行程N: 低优先序的行程L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)START: 行程开始时间TIME: 执行的时间COMMAND:所执行的指令

kill

:于删除执行中的程序或工作。

kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
-l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。(查看)-s <信息名称或编号>  指定要送出的信息。[程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号。

使用 kill -l 命令列出所有可用信号(查看)。

最常用的信号是:

1 (HUP):重新加载进程。9 (KILL):杀死一个进程。15 (TERM):正常停止一个进程。
# 强制杀死进程 kill -KILL 123456 kill -9 123456 # 发送SIGUP信号 kill -HUP pid kill -1 pid # 杀死指定用户所有进程 kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程 kill -u hnlinux //方法二

查看系统资源

free

:用于显示内存状态。

-h, --human show human-readable output --si use powers of 1000 not 1024-l, --lohi show detailed low and high memory statistics-t, --total show total for RAM + swap-s N, --seconds N repeat printing every N seconds-c N, --count N repeat printing N times, then exit-w, --wide wide output

uname

:用于显示系统信息。

uname [-amnrsv][--help][--version]
-a或--all  显示全部的信息。-m或--machine  显示电脑类型。-n或--nodename  显示在网络上的主机名称。-r或--release  显示操作系统的发行编号。-s或--sysname  显示操作系统名称。-v  显示操作系统的版本。

date

:显示或设置系统时间

uptime

:查看系统启动时间和工作负载

time

:给出命令运行时间

time ls

后台与自动运行

nohup

:用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup Command [ Arg … ] [ & ] # 再后台执行 root 目录下的 runoob.sh 脚本 nohup /root/runoob.sh > runoob.log 2>&1 & // 2>&1 解释: // 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。 // 0 – stdin (standard input,标准输入) // 1 – stdout (standard output,标准输出) // 2 – stderr (standard error,标准错误输出)

crontab(没有用过)

:用来定期执行程序的命令。每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
crontab [ -u user ] { -l | -r | -e }

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数说明:

-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)-r : 删除目前的时程表-l : 列出目前的时程表
# 时间格式 f1 f2 f3 f4 f5 program * * * * * - - - - - | | | | | | | | | +----- 星期中星期几 (0 - 6) (星期天 为0) | | | +---------- 月份 (1 - 12) | | +--------------- 一个月中的第几天 (1 - 31) | +-------------------- 小时 (0 - 23) +------------------------- 分钟 (0 - 59)

网络使用基础

IP信息查询

ifconfig

:用于显示或设置网络设备

netstat

:用于显示网络状态。利用 netstat 指令可让你得知整个 Linux 系统的网络情况。

apt install net-tools

电子邮件

mailx

:寄送电子邮件

# 安装 mailx,wsl子系统中似乎不能安装 sudo apt-get install heirloom-mailx -b<地址>:指定密件副本的收信人地址; -c<地址>:指定副本的收信人地址; -f<邮件文件>:读取指定邮件文件中的邮件; -i:不显示终端发出的信息; -I:使用互动模式; -n:程序使用时,不使用mail.rc文件中的设置; -N:阅读邮件时,不显示邮件的标题; -s<邮件主题>:指定邮件的主题; -u<用户帐号>:读取指定用户的邮件; -v:执行时,显示详细的信息。 # 使用的设备是实验室服务器,其绑定的邮箱为 fuwuqiyouxiang@163.com [tb@master ~]$ mail -s "This is the subject" wodeqqhao@qq.com This is my first email. EOT # 需要ctrl+D保存发送,并显示EOT echo "hello,this is the content of mail.welcome to www.jsdig.com" | mail -s "Hello from jsdig.com by pipe" admin@jsdig.com # 使用管道编辑内容 mail -s "Hello from jsdig.com by file" admin@jsdig.com < mail.txt # 使用文件发送邮件

网络下载

ftp

:文件传输协议,是用于与远程网络之间传输文件的标准网络协议

在大多数情况下,您将使用桌面FTP客户端连接到远程服务器下载或上传文件。但是,ftp当您在没有GUI的服务器上工作并且希望通过FTP将文件传输到远程服务器或从远程服务器传输文件时,这时命令行客户端就很有用.

通过ftp传输数据时,连接未加密。要进行安全的数据传输,请使用SCP

为了能够传输文件,您必须至少具有对源文件的读取权限和对目标系统的写入权限

传输大文件时,建议在screentmux

会话中运行ftp命令

以下是一些最常见的FTP命令

help或?- 列出所有可用的FTP命令。cd - 切除远程计算机上的目录。lcd - 切换本地计算机上的目录。ls - 列出当前远程目录中的文件和目录的名称。mkdir - 在当前远程目录中创建一个新目录。pwd - 打印远程计算机上的当前工作目录。delete - 删除当前远程目录中的文件。rmdir- 删除当前远程目录中的目录。get - 将一个文件从远程复制到本地计算机。mget - 将多个文件从远程复制到本地计算机。put - 将一个文件从本地复制到远程计算机。mput - 将一个文件从本地复制到远程计算机。用bye或关闭连接quit

wget

:下载工具命令,支持http/ftp

Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

wget 可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,wget 遵循Robot Exclusion标准(/robots.txt). wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。

wget 非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性.如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

curl

:在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

Linux 基础命令

管道(Pipe)

管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。其本质是一个伪文件(实为内核缓冲区),由两个文件描述符引用,一个表示读端,一个表示写端。规定数据从管道的写端流入管道,从读端流出。

管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。

ls | wc -l

简单地讲就是前一个输出作为后一个的输入

@# 我是用管道给ls传递文件夹为什么不行?(s思考)

(base) root@LAPTOP-AHHNRE3A:~/github# ls test1 123.tar.bz2 123.txt 1234.txt test2 (base) root@LAPTOP-AHHNRE3A:~/github# echo test1|ls 123.cpp QIIME2ChineseManual a.cpp file2 test1 # 为什么这里不能把test1使用管道传递给ls?

查找(grep)

:用于查找文件里符合条件的字符串。

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。(?)

# 查找所有.cpp文件中含有hello的行 (base) root@LAPTOP-AHHNRE3A:~/github# ls 123.cpp QIIME2ChineseManual a.cpp file2 test1 (base) root@LAPTOP-AHHNRE3A:~/github# grep hello *.cpp 123.cpp:hello1123 a.cpp:hello world # 以递归的方式查看文件夹下符合条件的文件 grep -r update /etc/acpi # 反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。 (base) root@LAPTOP-AHHNRE3A:~/github# grep -v 1123 *.cpp a.cpp:hello world

执行命令(xargs)

; 不考虑各个命令的相关性
(base) root@LAPTOP-AHHNRE3A:~/github# ls;grep -v 12 *.cpp;ls 123.cpp QIIME2ChineseManual a.cpp file2 test1 a.cpp:hello world 123.cpp QIIME2ChineseManual a.cpp file2 test1
&& 前面一个不正确执行,则继续执行下一个
(base) root@LAPTOP-AHHNRE3A:~/github# ls --a && ls ls: option --a is ambiguous; possibilities: --all --almost-all --author Try ls --help for more information. (base) root@LAPTOP-AHHNRE3A:~/github# ls && ls --a 123.cpp QIIME2ChineseManual a.cpp file2 test1 ls: option --a is ambiguous; possibilities: --all --almost-all --author Try ls --help for more information.
|| 前面一个不正确执行,才继续执行下一个
(base) root@LAPTOP-AHHNRE3A:~/github# ls --a || ls ls: option --a is ambiguous; possibilities: --all --almost-all --author Try ls --help for more information. 123.cpp QIIME2ChineseManual a.cpp file2 test1 (base) root@LAPTOP-AHHNRE3A:~/github# ls || ls --a 123.cpp QIIME2ChineseManual a.cpp file2 test1

xargs 参数代换(前面管道的结果作为此命令的输入) xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:

somecommand |xargs -item command vim test.txt cat test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z # 设置多行输出 (base) root@LAPTOP-AHHNRE3A:~/github# cat test.txt | xargs -n10 a b c d e f g h i j k l m n o p q r s t u v w x y z # 定义界定符 (base) root@LAPTOP-AHHNRE3A:~/github# echo "nameXnameXnameXname" | xargs -dX name name name name # 结合 -n 使用 (base) root@LAPTOP-AHHNRE3A:~/github# echo "nameXnameXnameXname" | xargs -dX -n2 name name name name # 假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接: cat url-list.txt | xargs wget -c

排序

sort

:用于将文本文件内容以排序。

sort 可针对文本文件的内容,以行为单位来排序。

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]
-b 忽略每行前面开始出的空格字符。-c 检查文件是否已经按照顺序排序。-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。-f 排序时,将小写字母视为大写字母。-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。-m 将几个排序好的文件进行合并。-M 将前面3个字母依照月份的缩写进行排序。-n 依照数值的大小排序。-u 意味着是唯一的(unique),输出的结果是去完重了的。-o<输出文件> 将排序后的结果存入指定的文件。-r 以相反的顺序来排序。-t<分隔字符> 指定排序时所用的栏位分隔字符。+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。--help 显示帮助。--version 显示版本信息。[-k field1[,field2]] 按指定的列进行排序。
# 排序 sort file $ cat testfile # testfile文件原有排序 test 30 Hello 95 Linux 85 $ sort testfile # 重排结果 Hello 95 Linux 85 test 30 # 使用 -k 参数设置对第二列的值进行重排 $ sort testfile -k 2 test 30 Linux 85 Hello 95

uniq

:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

当重复的行并不相邻时,uniq 命令是不起作用的

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
-c或--count 在每列旁边显示该行重复出现的次数。-d或--repeated 仅显示重复出现的行列。-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。-u或--unique 仅显示出一次的行列。-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。--help 显示帮助。--version 显示版本信息。[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。
# 去除重复数据行 (base) root@LAPTOP-AHHNRE3A:~/github# cat test.txt #原有内容 test 30 test 30 test 30 Hello 95 Hello 95 Hello 95 Hello 95 Linux 85 Linux 85 (base) root@LAPTOP-AHHNRE3A:~/github# uniq test.txt test 30 Hello 95 Linux 85 # 统计重复次数 (base) root@LAPTOP-AHHNRE3A:~/github# uniq -c test.txt 3 test 30 4 Hello 95 2 Linux 85

wc

:用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据(这个不太懂)。

-c或--bytes或--chars 只显示Bytes数。-l或--lines 显示行数。-w或--words 只显示字数。
$ wc testfile # testfile文件的统计信息 3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598 wc testfile testfile_1 testfile_2 #统计三个文件的信息 (base) root@LAPTOP-AHHNRE3A:~/github# wc *.cpp 1 1 10 123.cpp 1 2 12 a.cpp 2 3 22 total

软件的安装

二进制(binary)文件包

下载即用

源代码文件包

tarball文件

RPM

YUM

一般直接百度如何安装

Shell & scripting(Programing)

什么是shell?

shell 和python,C语言一样是一门编程语言(programing)bash:Linux默认的shelltcsh:整合了csh其他ksh,zshwhichshell

Shell 有什么?

Shell的环境变量分为两种:

set:可以显示和设置shell私有变量,仅在本 shell 中有效。不同shell(bash、csh)私有变量不同。env:可以显示和设置用户环境变量 ,仅在当前会话中有效。

另外set 变量可以通过 export 工具导入到 env 变量中:

export:显示或设置当前导出成用户变量的shell变量。

示例:

_SET="var_set" # 设定一个shell变量_SET echo $_SET # 查看是否成为shell私有变量 var_set set | grep "var_set" _SET=var_set env | grep "var_set" # 没有结果,说明变量_SET不在env用户环境变量中 export _SET # export导出变量_SET到env中 env | grep "var_set" # 再查看,变量_SET已经存在env中 _SET=var_set export | grep _SET # 查看export中的变量 declare -x _SET="var_set" # 清除set变量 unset _SET set | grep "var_set" # 取消后不存在_SET export | grep "var_set" # 取消后不存在 env | grep "var_set" # 取消后不存在 # 设置只读变量 readonly _SET _SET="set_var" # 不能被修改 -bash: _SET: readonly variable unset _SET # 不能被清除 -bash: unset: _SET: cannot unset: readonly variable
env - 环境变量SHELL、PATH、USER、HOME、LANG

例子

env 命令

如何修改变量

~/.bash_profile & ~/.bashrc 环境变量配置问及那echo:可以显示变量export:设置或显示环境变量source:读入环境变量配置文件永久修改环境变量:

运行脚本

chmod a+x testblash.sh./testblast.sh

示例:

# 编写.sh文件 vim test.sh (base) root@LAPTOP-AHHNRE3A:~/github# cat test.sh wc *.cpp (base) root@LAPTOP-AHHNRE3A:~/github# ./test.sh 1 1 10 123.cpp 1 2 12 a.cpp 2 3 22 total

Linux 高阶命令

替换命令

sed

:利用脚本来处理文本文件。数据行中的数据选取、替换、删除、新增

sed 可依照脚本的指令来处理、编辑文本文件。

Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed [-hnV][-e<script>][-f<script文件>][文本文件]
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。-i 选项可以直接修改文件内容,这功能非常有帮助!-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。-h或--help 显示帮助。-n或--quiet或--silent 仅显示script处理后的结果。-V或--version 显示版本信息。

动作说明:

a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~(add)c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);(insert)p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
(base) root@LAPTOP-AHHNRE3A:~/github# cat test.txt test 30 Hello 95 Linux 85 ​ # 在2行后新增一行 (base) root@LAPTOP-AHHNRE3A:~/github# sed -e 2a\newline test.txt test 30 Hello 95 newline Linux 85 ​ # 将test.txt列出行号,并删除1-2行 (base) root@LAPTOP-AHHNRE3A:~/github# nl test.txt | sed 1,2d 3 Linux 85 # 删除2到最后一行 (base) root@LAPTOP-AHHNRE3A:~/github# nl test.txt | sed 2,$d 1 test 30 ​ # 在第二行后添加drink tea (base) root@LAPTOP-AHHNRE3A:~/github# sed -e 2a drink tea test.txt test 30 Hello 95 drink tea Linux 85 # 在第二行钱添加drink tea (base) root@LAPTOP-AHHNRE3A:~/github# sed -e 2i drink tea test.txt test 30 drink tea Hello 95 Linux 85 ​ # 替换 # 替换2行 (base) root@LAPTOP-AHHNRE3A:~/github# sed -e 2c drink tea\drink coffee test.txt test 30 drink teadrink coffee Linux 85 # 将第2-3行替换 (base) root@LAPTOP-AHHNRE3A:~/github# sed -e 2,3c drink tea\drink coffee test.txt test 30 drink teadrink coffee ​ # 搜索并显示 # 搜索含有数字test的行并打印出来 (base) root@LAPTOP-AHHNRE3A:~/github# sed -n /test/p test.txt test 30 # 不适用-n,还会打印整个文件 ​ # 搜索并删除 # 搜索含有数字test的行并删除,将不含test的行输出 (base) root@LAPTOP-AHHNRE3A:~/github# sed /test/d test.txt Hello 95 Linux 85 ​ # 搜索并执行命令 # 找到含有test的一行,并将30替换为90 (base) root@LAPTOP-AHHNRE3A:~/github# sed -n /test /{s/30/90/;p;q} test.txt test 90 sed s/要被取代的字串/新的字串/g ​ # 多点编辑 # 删除2-3行数据,再将test替换为examing (base) root@LAPTOP-AHHNRE3A:~/github# sed -e 2,3d -e s/test/examing/ test.txt examing 30

awk

:一种处理文本文件的语言,是一个强大的文本分析工具。跟sed相似,适用于小型数据处理

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
awk [选项参数] script var=value file(s) 或 awk [选项参数] -f scriptfile var=value file(s)
-F fs or --field-separator fs 指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。-v var=value or --asign var=value 赋值一个用户定义变量。-f scripfile or --file scriptfile 从脚本文件中读取awk命令。-mf nnn and -mr nnn 对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。-W compact or --compat, -W traditional or --traditional 在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。-W copyleft or --copyleft, -W copyright or --copyright 打印简短的版权信息。-W help or --help, -W usage or --usage 打印全部awk选项和每个选项的简短说明。-W lint or --lint 打印不能向传统unix平台移植的结构的警告。-W lint-old or --lint-old 打印关于不能向传统unix平台移植的结构的警告。-W posix 打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符和=不能代替和=;fflush无效。-W re-interval or --re-inerval 允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。-W source program-text or --source program-text 使用program-text作为源代码,可与-f命令混用。-W version or --version 打印bug报告信息的版本。

基本用法: 更多见https://www.runoob.com/linux/linux-comm-awk.html

log.txt文本内容:

2 this is a test 3 Are you like awk Thiss a test 10 There are orange,apple,mongo

用法一:

awk {[pattern] action} {filenames} # 行匹配语句 awk 只能用单引号 ​ # 每行按空格或TAB分割,输出文本中的1、4项 $ awk {print $1,$4} log.txt --------------------------------------------- 2 a 3 like Thiss 10 orange,apple,mongo # 格式化输出 $ awk {printf "%-8s %-10s\n",$1,$4} log.txt --------------------------------------------- 2 a 3 like Thiss 10 orange,apple,mongo ​

用法二:

awk -F #-F相当于内置变量FS, 指定分割字符 ​ # 使用","分割 $ awk -F, {print $1,$2} log.txt --------------------------------------------- 2 this is a test 3 Are you like awk Thiss a test 10 There are orange apple # 或者使用内建变量 $ awk BEGIN{FS=","} {print $1,$2} log.txt --------------------------------------------- 2 this is a test 3 Are you like awk Thiss a test 10 There are orange apple # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割 $ awk -F [ ,] {print $1,$2,$5} log.txt --------------------------------------------- 2 this test 3 Are awk Thiss a 10 There apple

用法三:

awk -v # 设置变量 ​ ​ $ awk -va=1 {print $1,$1+a} log.txt --------------------------------------------- 2 3 3 4 Thiss 1 10 11 $ awk -va=1 -vb=s {print $1,$1+a,$1b} log.txt --------------------------------------------- 2 3 2s 3 4 3s Thiss 1 Thisss 10 11 10s

用法四:

awk -f {awk脚本} {文件名} ​ ​ $ awk -f cal.awk log.txt

运算符

运算符描述= += -= *= /= %= ^= **=赋值?:条件表达式||逻辑或&&逻辑与~ 和 !~匹配正则表达式和不匹配正则表达式< <= > >= != ==关系运算符空格连接+ -加,减* / %乘,除与求余+ - !一元加,减和逻辑非^ ***求幂++ --增加或减少,作为前缀或后缀$字段引用in数组成员

设置别名(alias)

:用来设置指令的别名,对一些较长的命令进行简化。使用alias时,必须使用单引号将原来的命令包含,防止特殊字符导致错误。

alias 别名=原命令 -选项/参数

例子:

# 设置别名 alias q=exit alias cp=“cp -I” alias ll=“ls -I --color=auto” alias ls=“ls --color=auto” alias mv=“mv -I” ​ # 查看已设置的别名列表 (base) root@LAPTOP-AHHNRE3A:~/github# alias -p alias egrep=egrep --color=auto alias fgrep=fgrep --color=auto alias grep=grep --color=auto alias l=ls -CF alias la=ls -A alias ll=ls -alF alias ls=ls --color=auto alias q=exit ​ # 删除别名 unalias 别名 ​ # 别名存放在 ~/.bashrc; # alias命令只作用于当次登入的操作。如果想每次登入都能使用这些命令的别名,则可以把相应的alias命令存放在 ~/.bashrc 文件中。 # 打开~/.bashrc文件,输入要设置的alias命令,保存,然后运行 source ~/.bashrc

编译(Mak & makefile)

不太懂,没有用过,了解一下就好了

Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一。管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题。本文我们将用一些实例来讨论 make 命令背后的工作机制。

对于不知道背后机理的人来说,make 命令像命令行参数一样接收目标。这些目标通常存放在以 “Makefile” 来命名的特殊文件中,同时文件也包含与目标相对应的操作。更多信息,阅读关于 Makefiles 如何工作的系列文章。

当 make 命令第一次执行时,它扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们。一旦主依赖编译之后,然后就编译主目标(这是通过 make 命令传入的)。

现在,假设你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关的目标文件,因此,编译完最终的可执行文件节省了大量的时间。

详见:

监控IO(iostat)

:iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。参考

iostat[参数][时间][次数]
-C 显示CPU使用情况-d 显示磁盘使用情况-k 以 KB 为单位显示-m 以 M 为单位显示-N 显示磁盘阵列(LVM) 信息-n 显示NFS 使用情况-p[磁盘] 显示磁盘和分区的情况-t 显示终端和CPU的信息-x 显示详细信息-V 显示版本信息

例子:

# 参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。 iostat -d -k 1 10 ​ iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

文件分块

split

:命令用于将一个文件分割成数个。该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
-<行数> : 指定每多少行切成一个小文件-b<字节> : 指定每多少字节切成一个小文件--help : 在线帮助--version : 显示版本信息-C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性[输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号

例子:

split -6 README #将README文件每六行分割成一个文件

csplit

:用于分割文件。将文件依照指定的范本样式予以切割后,分别保存成名称为xx00,xx01,xx02...的文件。若给予的文件名称为"-",则csplit指令会从标准输入设备读取数据。

csplit [-kqsz][-b<输出格式>][-f<输出字首字符串>] [-n<输出文件名位数>][--help][--version][文件][范本样式...]
-b<输出格式>或--suffix-format=<输出格式> 预设的输出格式其文件名称为xx00,xx01...等,您可以通过改变<输出格式>来改变输出的文件名。-f<输出字首字符串>或--prefix=<输出字首字符串> 预设的输出字首字符串其文件名为xx00,xx01...等,如果你指定输出字首字符串为"hello",则输出的文件名称会变成hello00,hello01...等。-k或--keep-files 保留文件,就算发生错误或中断执行,也不能删除已经输出保存的文件。-n<输出文件名位数>或--digits=<输出文件名位数> 预设的输出文件名位数其文件名称为xx00,xx01...等,如果你指定输出文件名位数为"3",则输出的文件名称会变成xx000,xx001...等。-q或-s或--quiet或--silent 不显示指令执行过程。-z或--elide-empty-files 删除长度为0 Byte文件。--help 在线帮助。--version 显示版本信息。

例子:

(base) root@LAPTOP-AHHNRE3A:~/github# cat test.txt 2 this is a test 3 Are you like awk Thiss a test 10 There are orange,apple,mongo ​ # 将文本文件testfile以第 2 行为分界点切割成两份 $ csplit testfile 2 13 #xx00文件字符个数 76 #xx01文件字符个数 (base) root@LAPTOP-AHHNRE3A:~/github# cat xx00 2 this is a test (base) root@LAPTOP-AHHNRE3A:~/github# cat xx01 3 Are you like awk Thiss a test 10 There are orange,apple,mongo

数据同步(Backup & sync, rsync)

sync

:用于数据同步,sync命令是在关闭Linux系统时使用的。

Linux 系统中欲写入硬盘的资料有的时候为了效率起见,会写到 filesystem buffer 中,这个 buffer 是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer 中,而系统又突然断电的话,那么资料就会流失了,sync 指令会将存于 buffer 中的资料强制写入硬盘中。

rsync

:Rsync同样是一个在类Unix和Window系统上通过网络在系统间同步文件夹和文件的网络协议。Rsync可以复制或者显示目录并复制文件。Rsync默认监听TCP 873端口,通过远程shell如rsh和ssh复制文件。Rsync必须在远程和本地系统上都安装。

rsync的主要好处是:

速度:最初会在本地和远程之间拷贝所有内容。下次,只会传输发生改变的块或者字节。

安全:传输可以通过ssh协议加密数据。

低带宽:rsync可以在两端压缩和解压数据块。
# rsysnc [options] source path destination path

例子:

在Linux下使用rsync的6个实例 | 《Linux就该这么学》 (linuxprobe.com)