Linux 基础

难以忘记

Bash Shell 命令

命令补全符和通配符:
  • 输入文件前几个字符时,按下 tab 会自动补全文件,按两下 tab 会给出所有相符的文件;
  • " * " 用于匹配文件名中任意长度的字符串,而类似的?只匹配一个字符;
    在这里插入图片描述
  • " [ ] " 用于匹配所有出现方括号的字符,也可以使用短线 - 来匹配范围。
    在这里插入图片描述
列出目录内容:dir 和 vdir

windows 用的比较多。在 linux 中,dir 类似 ls,但比 ls 功能少。 vdir 相当于 ls -l 命令,默认列出文件和目录的完整信息。

查看文本文件:cat 和 more

cat 用于查看文本文件内容,后跟文件名作为参数。可以跟多个文件名作为参数,也可以使用通配符,cat 提供了 -n 选项显示行号。
在这里插入图片描述
cat 命令的缺陷是一次会显示文件内的所有内容,对于大文件来说,cat 命令的这个缺陷越明显。所以,linux 提供了 more 命令来分页显示文件内容。空格 或 F 向下翻页,B 向上翻页,enter 向下滚动一行,Q 退出。

阅读文件的开头和结尾:head 和 tail

可以用 -n 参数指定显示行号。可以指定多个文件名。
在这里插入图片描述

更好的文本阅读工具:less

搜索,键入 “/” 跟上要查找的内容,如果要再次查找相同的内容,键入 “/”,按下 enter 就可以了。
“ -M ” 参数会在底部显示文件名、行号、总行数、百分比。
在这里插入图片描述

查找文件内容:grep

用法:grep 关键词 文件名。可跟多个文件名。
在这里插入图片描述

查找文件:find

用法:find 路径 -name 名字 ;默认当前路径,默认标准输出 -print。参数 -type 可指定 文件类型。可使用命令 man find 查看 find 详情。

更快速的文件定位:locate

在这里插入图片描述
locate 命令没有进入到子目录搜索,而是通过检索文件名数据库来确定文件位置,locate 命令自动建立整个文件名数据库,updatedb 命令可以立刻生成该数据库文件的最新版本。

终端启动程序

如,

$ firefox

后台启动

$ firefox &
查找特定程序:whereis

在这里插入图片描述
-b 参数指定只查找这个程序的二进制可执行文件;如果whereis 无法找到文件,将会返回一个空串。

用户及版本信息查看

who 查看当前系统有哪些用户登录,工作在哪个工作台上:
在这里插入图片描述
whoami,当前是哪个用户:
在这里插入图片描述
uname 显示当前系统版本信息。带 -a 参数选项会给出当前系统所有有用信息:
在这里插入图片描述
-r 参数选项显示系统内核版本信息:
在这里插入图片描述

寻求帮助:man 命令
获取命令简介:whatis 和 apropos

whatis 获取命令简介;
apropos 根据命令简介的某一关键词查找相关命令;
在这里插入图片描述

文件目录管理

在这里插入图片描述

建立文件和目录:mkdir

mkdir 目录名。可指定多个目录名,即一次性创建多个目录。
-p 选项提供创建多级目录,如:
在这里插入图片描述

建立一个空文件:touch

touch 亦可更新文件的建立日期和时间,文件内容不变。
在这里插入图片描述

移动和重命名:mv

用 mv 移动一个文件到一个目录中,如果该目录中存在相同的文件名文件,则该文件会被移动的文件所覆盖。-i 选项增加提示信息,-b 选项会直接在目标目录中的同名文件后面加~,避免覆盖。
在这里插入图片描述
在这里插入图片描述

复制文件和目录:cp

提供 -i 、-b 选项类似 mv,同时 cp 命令在执行复制任务时会自动跳过目录,为此,可以使用 -r 选项将子目录和文件一起复制到目标目录中。

删除目录和文件:rmdir 和 rm

rmdir 用于删除目录,但删除目录前需要将目录下的文件和子目录删除;
rm 用于删除目录或文件,可同时删除多个文件,匹配通配符*,-i 参数增加提示信息,-f 参数 不作确认提示。 -r 递归删除目录下所有文件及其子目录。

改变文件所有权:chown 和 chgrp
 chown [options] user [:group] file...

修改文件所有者和组别。可以只改变文件的所有者如:chown username filename,也可以只改变文件的组别:chown :groupname filename,可同时更改所有者和组别:chown username:groupname filename。-R 参数 递归地修改目录及其下面内容的所有权。

chgrp groupname filename

chgrp 提供更改文件的组别,同样提供 -R 参数。

改变文件权限:chmod

这个命令使用“用户组+/-权限”的方式来增加/删除相应权限,而用户组包括文件所有者(u),文件属组(g),其他人(o),和所有人(a),权限不必多说,如:chmod u+x filename chmod a-x filename
还可以通过“用户组=权限”的规则来设置文件权限,如:chmod ug=rx,o=r filename
亦可以通过“用户组=用户组”的规则来设置文件权限,如 chmod o=u filename

在文件之间建立连接:ln

在这里插入图片描述

ln [options] source [dest]
ln [options] source...directory

如建立软链接,需要带上 -s参数,ln -s TARGET LINK_NAME,链接建立后,删除源文件等于软连接失效。
在这里插入图片描述
还有一种链接称为硬链接,即不带 -s 参数,链接建立后,两个文件是完全独立的文件,因为硬链接的存在,修改其中一个会同时影响到两个。
在这里插入图片描述

输入输出重定向:

输出重定向:> 、 >>
输入重定向:<、<<
在这里插入图片描述
一种特殊的用法
操作符 < 可以让程序从文件中获取输入。
操作符 << 被称为立即文档,明确告诉 shell 从键盘接收输入,并可以自定义结束输入的分隔符。
输入重定向应用不多。

管道符:|

软件包管理

常用的软件包格式有两种:RPM,即 Red-Hat Package Manager;另一种是 Debian 和 Ubuntu 上使用的 .deb 格式。

管理 .deb 软件包:dpkg
管理 RPM 软件包:rpm
高级软件包工具:apt

即 Red-Hat Package Manager,是Debian及其派生的Linux软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。

$ apt-get update  ##更新当前 apt-get 缓存中的软件包信息
$ apt-cache search keyword ##查找包含keyword关键词的软件包,用于查找软件包名。进而卸载。

在这里插入图片描述

配置 apt-get
  • 安装源配置:/etc/apt/sources.list
    在这里插入图片描述
从源代码编译软件

首先下载解压源代码,其次配置软件:
在这里插入图片描述
然后编译:make
最后安装软件:make install

磁盘管理

挂载文件系统:mount
在启动的时候挂载文件系统:/etc/fstab 文件

在这里插入图片描述

卸载文件系统:umount
查看磁盘使用情况:df
检查和修复文件系统:fsck
在磁盘上建立文件系统:mkfs
$ mkfs -t ext4 /dev/vda1   ##格式化/dev/vda1,格式化即建立文件系统的过程

如果硬盘分区已挂载到文件系统,那么格式化之前必须用 umount 命令卸载该分区。

压缩文件:gzip

压缩文件:$ gzip filename
解压文件:$ gunzip filename 或者 :$ gzip -d filename。支持的文件类型有:.gz、.Z、-gz、.z、-z和z。
-l 参数用于压缩效果。$ gzip -l filename
-t 参数用于测试压缩文件完整性,如果压缩文件正常,不会有任何输出。可以与 -v 结合使用。

更高的压缩率:bzip2

用法参数等同于 gzip。支持的文件类型有:.bz2、.bz、.tbz2、.tbz、bzip2

RAR 文件

windows 下标准压缩格式,压缩效果比 zip 更好。Linux 下需要下载 RAR For Linux。
解压缩命令:$ rar x filename。其他命令可参考文档。

文件打包:tar

常用参数:

$ -c  ##  --create 建立新的文档,即压缩
$ -x  ##  --extract, --get  从存档展开文件,即解压
$ -f  ##  --file [HOSTNAME:]F 指定存档或设备 (缺省为 /dev/rmt0)
$ -w  ##  --interactive, --confirmation  每个操作都要求确认
$ -z  ##  --gzip, --ungzip 用 gzip 对存档压缩或解压
$ -j  ##  --bzip2  调用 bzip2 程序解压、压缩
$ -v  ##  --verbose  详细显示处理的文件

eg:将some目录压缩为gz文件:$ tar -zcvf some.tar.gz some/
等同于:

$ tar -cvf  somea.tar some/
$ gzip some.tar

解压gz文件:$ tar -zxvf some.tar.gz
等同于:

$ gzip -d some.tar.gz
$ tar -xvf some.tar

tar 命令参数前的 “-” 可以省略。

转移文件:dd

转换和拷贝文件
常用参数:

 if=file 从 file 中读而不是标准输入。
 of=file 写到 file 里去而不是标准输出。除非指定 conv=notrunc ,否则, dd 将把 file 截为O字节(或由 seek= 选项指定的大小)

eg:$ dd if=/dev/cdrom of=CD.iso ## if指定输入端,of指定输出端,该命令将一张 CD 完整的转为 iso 镜像文件
在这里插入图片描述在这里插入图片描述

安装硬盘和分区:fdisk

用于在一块硬盘上建立逻辑分区。
不要在当前硬盘试用,会完整的删除整个系统。
在这里插入图片描述

使用 mkfs 建立 ext3fs 文件系统

建立完分区之后,就需要在各个分区系统建立文件系统,即格式化分区。
eg:$ mkfs -t ext4 /dev/sdb1

使用 fsck 检查文件系统
$ fsck -f /dev/sdb1  ## -f 强制执行
测试分区

即将新建立的文件系统挂载到相应的目录下。

$ mkdir /web
$ mount /dev/sdb1 /web
$ df /web

用户与用户组管理

添加用户:useradd 和 groupadd
  • useradd:创建一个新用户或更新默认新用户信息,不指定 -g 会默认创建一个同名用户组,可用:$ groups xxx 查看用户所属组,常用参数:
$ -g ## --gid GROUP 用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。
$ -m ## --create-home 为用户创建主目录。不带此参数,用户可以登录shell但不能登录图形化界面。
$ -p ## --password
$ -U ## --user-group 创建一个和用户同名的组,并将用户添加到组中。
$ -s ## 指定用户登录后使用的 shell,默认sh,sh是一个指向/bash/shell的软链接。
  • passwd:更改密码。
  • groupadd:创建一个新组。
记录用户操作:history

查看历史 shell命令,eg:$ history 10

直接编辑 passwd 和 shadow 文件

linux 一切基本配置命令最终会反映到配置文件中,所有的用户信息都会保存到 /etc/passwd,而用户密码则会保存到 /etc/shadow。修改需要 root 权限。
/etc/passwd 文件如下:
在这里插入图片描述
每一行由七个字段组成,字段间使用冒号分隔。各字段的含义如下:

  1. 登录名;
  2. 口令占位符,即密码;
  3. 用户UID;
  4. GID;
  5. 用户的私人信息,包括全名、办公室、电话等;
  6. 用户主目录;
  7. 登录shell;

/etc/shadow 文件如下:
在这里插入图片描述
各字段释义类似 /etc/passwd,以冒号分隔:

  1. 登录名
  2. 加密后的口令
  3. 上次修改口令的日期
  4. 两次修改口令之间的天数(最少)
  5. 两次修改口令之间的天数(最多)
  6. 提前多少天提醒用户修改口令;
  7. 在口令过期后多少天禁用该用户;
  8. 账户过期日期;
  9. 保留,目前为空;
删除用户:userdel
$ userdel xxx ## 默认只会删除用户,不会删除用户主目录,可使用 -r 参数同时删除其主目录。
管理用户账户:usermod

在这里插入图片描述
在这里插入图片描述
同 useradd 一样,可通过更改配置文件 /etc/passwd,/etc/shadow,/etc/group 实现 usermod 效果。

查看用户信息:id

用于查看 UID 和 GID 及所属组:
在这里插入图片描述

用户切换:su

用于切换 shell 用户,eg:

$ su ## 不带参数默认切换到 root
$ su xxx 切换到xxx

在这里插入图片描述

受限的特权:sudo

初次使用需要用户输入自己的密码,一段时间没有再次使用(默认5分钟),需要再次输入。
没有权限可配置 /etc/sudoers 指定用户可以执行特权命令。
在这里插入图片描述
在这里插入图片描述
第一个 All 代表在任何机器上,第二个代表任何用户,第三个代表任何命令。
在这里插入图片描述
在这里插入图片描述

/etc/group 文件

在这里插入图片描述
各字段含义:

  1. 组名
  2. 组口令占位符
  3. GID;
  4. 成员列表,用逗号隔开。

进程管理

setuid

setuid 程序是能够在运行时临时以其他用户身份(通常是root)执行操作的程序。
在这里插入图片描述

监视进程:ps 命令

在这里插入图片描述
在这里插入图片描述
ps 有不同选项参数,有适应 UNIX、BSD、GUN 等选项参数,可以随意混合使用不同类型的选项,但是可能会出现冲突。
ps 常用参数:

$ -A  ## 选择所有进程。与-e相同
$ -e  ## 选择所有进程。与-A相同
$ -a  ## 显示一个终端的所有进程,除了会话引线
$ -p  ## 选择所有进程。显示父ID,与p和--pid相同。
$ -u  ## 列出进程用户,userlist
$ -f  ## Do full-format listing.

eg:

打印所有用户的运行进程:

$ ps aux ## a 显示所有用户的进程 u 显示进程的所有者 x 显示非终端启用的进程

显示所有进程信息:

$ ps -A

显示指定用户所有进程:

$ ps a -u root

显示所有进程信息,连同命令行:

$ ps -ef
$ ps aux

将目前属于您自己这次登入的 PID 与相关信息列示出来:

$ ps -l

列出类似程序树的程序显示:

$ ps -axjf

输出指定的字段:

$ ps -o pid,ppid,pgrp,session,tpgid,comm
即时跟踪进程信息:top

默认10s 更新一次。
在这里插入图片描述

查看占用文件的进程:lsof

即查看某一文件是否被进程占用:$ lsof filename
在这里插入图片描述

向进程发送信号:kill

用法:$ kill [-ssignal|-p] [-a] pid...

kill 给指定进程发送指定信号. 如果没有指定信号, 则发送 TERM 信号. TERM 信号会杀死不能俘获该信号的进程. 对于其他进程, 可能需要使用 KILL (9) 信号,因为该信号不能够被俘获.
在这里插入图片描述
常用信号量:
在这里插入图片描述
在这里插入图片描述
KILL 信号量永远不会被程序捕捉,可以用于杀死进程。

调整进程的谦让度:nice 和 renice

nice 可以在程序启动时调整其谦让度,高谦让度意味着低优先级,谦让度的值范围在 -20~19 之间。
常用参数:

$  -n ##--adjustment=N add integer N to the niceness (default 10) 增量谦让度,默认10	

eg:

$ nice -n 2 bc  ## 以谦让度增量2启动 bc是一个计算程序
$ nice -n -2 bc  ## 以谦让度增量-2启动
$ nice bc  ## 不带n默认以谦让度增量10启动

与之对应的是 renice 可以在程序运行时调整其谦让度,eg:

$ renice +12 -p 5555 ## -p 指定进程号,将xxx程序谦让度调整为12	

所谓谦让度增量是指 nice 命令将 -n 参数后面的数值加上默认谦让度值,作为的程序的谦让度值。nice 调整的是**“相对”谦让度**,renice 调整的是**“绝对”谦让度**。nice 命令可查看默认谦让度的值。
在这里插入图片描述
如果用户不采取行动,新进程将继承父进程的谦让度

/PROC 文件系统

/PROC 存放着内核有关系统状态的各种意义的信息。在系统运行的时候,内核会随时向该目录写入数据,ps 和 top 就是从该目录读取数据的。

如下,数字存放的是对应pid进程信息。
在这里插入图片描述

网络管理

ifconfig 和 route

ifconfig 用于配置网络接口;route 用于配置静态路由。

文件传输:FTP

可使用 FTP 工具,也可使用 FTP 命令。

基于 SSH 的文件传输:SFTP 和 SCP

SFTP 和 SCP 是基于 SSH 的文件传输,加密的数据传输协议。在安全性要求较高的场合,应该尽可能使用 SFTP 代替传统的 FTP。
SFTP 命令用法类似与 FTP,常用命令如下:
在这里插入图片描述
eg:
在这里插入图片描述
利用 ssh 通道复制文件:SCP
下载:

$ scp txcloud:~/npp.7.8.1.Installer.x64.exe .  ## txcloud == root@xx.xx.xx.xx

在这里插入图片描述
上传:

$ scp npp.7.8.1.Installer.x64.exe txcloud:/app

在这里插入图片描述

使用 SSH 密钥:更便捷的 SSH 连接

大致方案如下:

  • 有一对互相匹配的密钥文件
  • 本地保存私钥副本
  • 服务器保存公钥
  • 建立 ssh 连接时检查公私钥的匹配性

具体实现如下:

生成密钥对
$ ssh-keygen -t rsa ## 该命令会在用户主目录 .ssh 目录下生成两个文件。
复制公钥到服务器

将公钥复制到远程服务器,并放在用户主目录下 .ssh 目录下 authorized_keys 文件中,具体如下:
在这里插入图片描述

访问
$ ssh username@xx.xx.xx.xx  ## 不再需要输入用户口令

Linux 编程

Vim 编辑器

一些快捷键:

  • H、J、K、L 分别代表向左、向上、向下、向右。
  • 小写 o 在所在行下一行插入、大写 O 在所在行上一行快速插入。
  • vim 搜索,
    /keyword ## 向后搜索      
    ?keyword ## 向前搜索
    n 可快速查找下一个结果
    :set ignorecase ## 搜索忽略大小写
    :set noignorecase ## 搜索开启大小写敏感
    
  • 替换字符串
    替换命令的完整语法::[range]s/pattern/string/[c,e,g,i]  ## 将范围 range 中的符合 pettern 的字符串替换为 string;
    其中 range 用法,"1,4" 代表一到四行,"1,$" 代表一到最后一行,也就是全文,“%” 也代表全文;
    最后方括号的是可选选项,释义:
    c ## 每次替换前询问,
    e ## 不显示错误信息,
    g ## 替换一行中的所有匹配项(这个选项通常需要使用);
    i ## 不区分大小写。
    
    eg::%s/yangxiao/loading/g ## 将yangxiao替换为loading
  • 针对程序员的配置
    :syntax on ## 语法高亮
    :set autoindent ## 自动缩进
    :set shiftwidth=4 ## 设置tab缩进空格,默认8个空格
    
  • 永久保存 vim 配置,需要编辑 “/etc/vimrc ”文件
    vimrc 常规配置:
    set mouse=a                      "支持鼠标定位
    set enc=utf-8                    "设置编码格式
    set nu                           "左侧行号
    set tabstop=4                    "tab 长度设置为 4
    set nobackup                     "覆盖文件时不备份
    set cursorline                   "突出显示当前行
    set ruler                        "在右下角显示光标位置的状态行
    set autoindent                   "自动缩进
    et nocompatible                  "关闭vi兼容  
    set history=500                  "历史命令  
    syntax on                        "语法高亮  
    set smartindent                  "智能缩进  
    set showmatch                    "括号匹配  
    set incsearch                    "设置快速搜索  
    set foldenable                   "开启代码折叠  
    filetype plugin on               "文件关联
    filetype indent on               "根据文件类型缩进
    

vim 一些常用命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Shell 编程

变量的赋值和使用
  1 #! /bin/bash
  2 #Display a line
  3
  4 echo "Hello World! 2019"
  5 log="monday" ## 赋值
  6
  7 echo "The value of logfile is:"
  8
  9 echo $log ## 使用

source 命令可以强行让一个脚本影响其父 Shell 环境。如下 log 变量在当前 Shell 可见。
在这里插入图片描述
与之相反的命令是 export,export 可以让一个脚本影响其子 Shell 环境。如下,其中 bash 为启动子 bash。
在这里插入图片描述
unset 可以手动注销一个变量,eg:

$ unset log
变量替换

转义字符 “\” 可转义 “$”:
在这里插入图片描述

使用 “${变量名}” 可替换变量:
在这里插入图片描述

位置变量

“$1”、“$2”、“$3”…分别代表第一个、第二个、第三个…参数,其中 “$0” 代表脚本本身:
在这里插入图片描述
除了数字命令的位置变量,Shell 还提供了另外三个位置变量:

$*:包含参数列表;
$@:包含参数列表,同上;
$#:包含参数个数;

eg:
在这里插入图片描述

Bash 引号规则
  • 双引号:阻止 Shell 对大多数特殊字符(如#)进行解释,但“$”、“`"、“ ” ” 仍然保持其特殊含义;
  • 单引号:阻止 Shell 对所有字符进行解释。
  • 倒引号:“ ` ”,这个符号位于 ESC 下方。当用倒引号括起一个 Shell 命令时,这个命令将被执行,结果将作为表达式的值。
    eg:
    在这里插入图片描述
运算符

在这里插入图片描述

表达式求值
  • “$[]”,eg:
    在这里插入图片描述
    在这里插入图片描述
    其中语法 [base#]n 来表示二到三十六进制的任何一个n值,如 2#10 代表二进制数10。
  • expr,$ expr 1 + 2 ## 1,2要有空格,否则会被当做字符串处理。eg:
    在这里插入图片描述
  • let 命令用于计算整数表达式的值:
    在这里插入图片描述
脚本执行命令和控制语句
if 选择结构

语法如下:

if test-commands
then
	commands
fi # 结束标志
if test-commands-1
then
	commands-1
elif test-commands-2
then
	commands-2
elif test-commands-3
then 
	commands-3
	...
else 
	commands
fi # 结束标志

eg:
在这里插入图片描述

case 多选结构

语法如下:

case word in
	pattern-1)
		commands-1
		;;  # ;; 只在 case 中出现,Shell 一旦遇到此命令就跳转到 case 结构的最后。
	pattern-2)
		commands-2
		;;
	...
	pattern-n)
		commands-n
		;;
esac
条件测试
if 判断依据

if 语句事实上判断的是程序的返回值,返回 0 表示为真,非 0 为假,代码如下:
testif 脚本:

  1 #! /bin/bash
  2
  3 if ./testscript -1
  4 then
  5     echo "testscript exit -1"
  6 fi
  7
  8 if ./testscript 0
  9 then
 10     echo "testscript exit 0"
 11 fi
 12
 13 if ./testscript 1
 14 then
 15     echo "testscript exit 1"
 16 fi

testscript 脚本:

  1 #! /bin/bash
  2
  3 exit $@ #接收用户输入的参数并返回给其父进程

最终执行结果:
在这里插入图片描述

test 命令和空格的使用

因为 if 语句接收一个命令作为参数,所以表达式不能直接放到 if 后面。为此需要额外引入一个命令,用于判断表达式真假。test 语法命令如下:

test expr

test 等同于 [],即:

[ espr ]

用于字符串比较的选项:
在这里插入图片描述
eg:用于检测是否为空。

#!/bin/bash

read password

if [ -z "$password" ]
then
	echo "please enter the password"
fi

用于文件测试的选项:
在这里插入图片描述
用于数字比较的选项:
在这里插入图片描述
复合表达式操作符:
在这里插入图片描述

循环结构

Shell 循环结构有三种:while、until、for。
while 语法:

while test-commands
do
	commands
done

eg:

#! /bin/bash

sum=0
number=1

while test $number -le 100
do
        sum=$[ $sum + $number ]
        let number=$number+1
done

echo "The summary is $sum"

util 语法:

until test-commands
do
	commands
done

除了 test-commands 和 while 相反,其他都相同,即 test-commands 为假时执行,为真时跳出循环。

for 语法:

for variable [in list]
do
	commands
done

eg:

  1 #! /bin/bash
  2
  3 for i in $@
  4 do
  5     echo $i
  6 done

在这里插入图片描述

seq

该工具接收一个数字参数,生成一个列表:$ seq 9 ## 生成1到9的数字

读取用户输入:read

如下图:read 读取输入,并存放于 REPLY 中
在这里插入图片描述
在这里插入图片描述

脚本执行命令
exit 命令

强行退出一个脚本,并向调用这个脚本的进程返回一个整数值。eg:

#! /bin/bash

exit 1
trap 命令

用于捕获一个信号。
eg:

  1 #! /bin/bash
  2
  3 trap 'echo "Type quit to exit"' INT ## 忽视 INT 信号(中断(同 Ctrl + C))
  4
  5 while [ "$input" != 'quit' ]
  6 do
  7     read input
  8 done

在这里插入图片描述

其他常用的 Shell 命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务器

服务器基础知识

在这里插入图片描述

任务计划:cron

语法
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

* * * * * user commands
# 第一个*代表分钟,0表示整点
# 第二个*代表小时
# 第三个*代表日期
# 第四个*代表月份
# 第五个*代表星期
user 代表用户
最后是执行的命令

eg:* 19 * * * root /app/start.sh

cron 原理

cron 随系统启动而作为守护进程启动,当 cron 启动时会读取配置文件,将内容保存到内存中。每过一分钟,cron 会重新检查配置文件,并执行这一分钟安排的任务。因为 cron 的最短周期是 1 分钟。

手动启动可以运行:$ sudo /etc/init.d/cron restart

crontab 管理

cron 的配置文件叫 crontab。可以在三个地方找到 cron 的配置文件。

系统全局的 cron 配置文件
  • 和系统维护有关的全局任务计划一般存放在 /etc/crontab 中,这个配置文件由系统管理员定制。
  • /etc/cron.d 目录,地位等同于 /etc/crontab,用于应用软件配置自己的任务计划。cron 还提供了 /etc/cron.daily、/etc/cron.hourly、/etc/cron.monthly、/etc/cron.weekly 用于存放每天,每小时,每月、每周执行的定时任务。这种机制使 cron 配置更为清晰。
    eg:cron.d 目录下两个文件各存放了不同的定时任务命令,针对不同应用,管理更为方便。
    在这里插入图片描述
普通用户的配置文件

普通用户的获得批准后可以配置自己的定时任务,每个用户的配置文件保存在 /var/spool/cron/ 目录下,以 username.cron 命名。

和系统 crontab 不同,编辑用户自己的配置文件应该使用 crontab 命令。语法如下:
在这里插入图片描述

管理用户的定时任务

/etc/cron.deny、/etc/cron.allow 分别用于配置哪些用户禁止提交 crontab 文件、哪些用户允许提交 crontab 文件。用法:将用户名追加到相应文件即可。
s在这里插入图片描述

简单的定时:at 命令

at 适合执行一次性任务。
ctrl + d 结束输入。
在这里插入图片描述
atq 查看当前已经设置的定时任务:
在这里插入图片描述
删除任务:$ atrm 8 ## 删除编号为8的任务

防火墙:iptables

初始化配置

在这里插入图片描述

添加规则

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值