1. 通过网络配置命令,让主机可以上网。 ip, netmask, gateway, dns,主机名。相干命令总结,终极可以通过这些配置让你的主机上网。
修改主机名:
- hostname -I #查看主机IP
- hostname #查看主机名
- hostnamectl set-hostname zjy-obuntu1 #设置主机名
复制代码
清空ens33的ip配置,重新添加ip永久配置
- ip a #查看主机网络信息
- ip addr flush ens37 #清空ens37网络配置
- nmcli conmcli connection add con-name ens37 ipv4.addresses 10.0.0.159/24 ipv4.gateway 10.0.0.2 ipv4.dns 180.76.76.76 ipv4.method manual type ethernet ifname ens37 #添加ens256网络配置信息
- ip a a 10.0.0.160/24 dev ens37 #添加ens37临时网络ip
复制代码
测试网络连通性
2. 解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。
网卡eth0相干配置说明
设置 | 说明 | TYPE
| 接口类型;常见有的 Ethernet, Bridge
| NAME
| 此配置文件应用到的设备
| DEVICE
| 设备名
| HWADDR
| 对应的设备的 MAC 地点
| UUID
| 设备的惟一标识
| BOOTPROTO
| 激活此设备时使用的地点配置协议,常用的 dhcp, static, none, bootp
| IPADDR
| 指明 IP 地点
| NETMASK
| 子网掩码 , 如 :255.255.255.0
| PREFIX
| 网络 ID 的位数 , 如 :24
| GATEWAY
| 默认网关
| DNS1
| 第一个 DNS 服务器地点
| DNS2
| 第二个 DNS 服务器地点
| DOMAIN
| 主机不完整时,主动搜刮的域名后缀
| ONBOOT
| 在体系引导时是否激活此设备
| USERCTL
| 普通用户是否可控制此设备
| PEERDNS
| 如果 BOOTPROTO 的值为 “dhcp” , YES 将允许 dhcp server 分配的 dns 服务
器信息直接覆盖至 /etc/resolv.conf 文件, NO 不允许修改 resolv.conf
| NM_CONTROLLED
| NM 是 NetworkManager 的简写,此网卡是否担当 NM 控制
| 3. 基于配置文件或命令完成bond0配置
4. 通过ifconfig命令效果找到ip地点.
5. 使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。
- #!/bin/bash
- NETWORK=10.0.0.
- PREFIX=24
- for i in {1..254};do
- IP=$NETWORK$i
- ping -c 1 -w 1 $IP &> /dev/null && echo $IP is 在线 || echo $IP is 不在线
- done
复制代码
6. 使用while read line和/etc/passwd,计算用户id总和。
- #!/bin/bash
- ABC=0
- while read line ;do
- a=$(echo $line|cut -d":" -f3)
- ABC=$((ABC+a))
- done < /etc/passwd
- echo $ABC
复制代码
7. 总结索引数组和关联数组,字符串处理,高级变量使用及示例
索引数组
索引数组是指键名为整数的数组。默认环境下,索引数组的键名是从0开始,并依次递增。它主要实用于利用位置(0、1、2……)来标识数组元素的环境。别的,索引数组的键名也可以本身指定。
基本操作:
1、界说数组:在 Bash 中,可以使用array=(element1 element2...)的形式界说一个索引数组。比方,fruits=(apple banana cherry)。
2、访问元素:使用${array[index]}的语法访问元素。如echo ${fruits[1]}会输出banana。
3、获取数组长度:通过${#array[@]}或${#array
}获取数组元素的个数。比方,对于上述fruits数组,${#fruits[@]}的值为 3。
4、遍历数组:可以使用for循环遍历数组。比方,for i in "${fruits[@]}"; do echo $i; done会逐个输出数组中的元素。
关联数组
关联数组是指键名为字符串的数组。通常环境下,关联数组元素的“键”和“值”之间有一定的业务逻辑关系。因此,通常使用关联数组存储一系列具有逻辑关系的变量。关联数组的“键”都是字符串,并与“值”之间具有一一对应的关系。
基本操作:
1、声明关联数组:在 Bash 中,需要先声明关联数组,使用declare -A array_name的语法。比方,declare -A user_info。
2、赋值操作:通过array_name[key]=value的方式赋值。如user_info["name"]="John",user_info["age"]=30。
3、访问元素:使用${array_name[key]}的语法访问元素。比方,echo ${user_info["name"]}会输出John。
4、遍历关联数组:可以使用for循环联合${!array_name[@]}(用于获取全部键)来遍历关联数组。
- for key in "${!user_info[@]}"; do
- echo "Key: $key, Value: ${user_info[$key]}"
- done
复制代码 字符串处理
1、字符串拼接:在 Bash 中,使用双引号将多个字符勾通接起来即可实现拼接。比方,str1="Hello",str2="World",则result="$str1 $str2"就拼接成了Hello World。
2、字符串截取:可以使用${string:start:len}的语法来截取字符串。其中start是起始位置(索引从 0 开始),len是要截取的长度。比方,对于字符串"Linux is useful",${string:6:2}会截取得到is。
3、字符串更换:
1)简单更换:可以使用${string/old/new}的语法进行简单更换。比方,对于字符串"I like apples",new_str=${string/apples/bananas}会将apples更换为bananas,得到I like bananas。
2)全局更换:使用${string//old/new}可以进行全局更换。比方,对于字符串"aa bb aa",new_str=${string//aa/cc}会得到cc bb cc。
4、字符串查找:
1)使用case语句:在 Bash 脚本中,case语句可以用于查找字符串中是否包含特定的模式。比方:
- string="This is a test"
- case $string in
- *test*)
- echo "Found 'test' in the string"
- ;;
- *)
- echo "Did not find 'test'"
- ;;
- esac
复制代码 2)使用grep命令:在命令行中,可以使用grep命令查找字符串。比方,echo "The cat sat on the mat" | grep "cat"会输出包含cat的行。
高级变量使用:
1、变量的引用和解引用
- 引用:在 Bash 中,直接使用变量名来引用变量,如echo $variable。
- 解引用(间接引用):当需要通过另一个变量的值来引用变量时,使用${!variable}的语法。比方,ref="variable",value=${!ref},如果variable存储了一个值,那么value就会获取到variable的值。
2、变量的作用域(全局和局部)
- 全局变量:在脚本的最外层界说的变量默认是全局变量,在整个脚本和子脚本(如果被调用)中都可以访问。可以使用export命令将变量导出,使它在子进程中也能被访问。比方,export GLOBAL_VAR="This is global"。
- 局部变量:在函数内部界说的变量是局部变量,只在函数内部有效。比方:
- function my_function() {
- local LOCAL_VAR="This is local"
- echo $LOCAL_VAR
- }
- my_function
复制代码 3、变量的默认值设置
- 语法:使用${variable:-default_value}的语法来设置变量的默认值。如果variable未界说或者为空,就会使用default_value。比方,echo ${UNDEFINED_VAR:-"Default"}会输出Default。
8. 求10个随机数的最大值与最小值。
- #!/bin/bash
- MIN=1000000
- MAX=0
- declare -a SZ
- for((i=0;i<10;i++));do
- SZ[$i]=$RANDOM
- if [ ${SZ[$i]} -gt $MAX ];then
- MAX=${SZ[$i]}
- fi
- if [ ${SZ[$i]} -lt $MIN ];then
- MIN=${SZ[$i]}
- fi
- done
- echo ${SZ[*]}
- echo MAX is $MAX
- echo MIN is $MIN
复制代码
9. 使用递归调用,完成阶乘算法实现。
- #!/bin/bash
- fac(){
- if [ $1 -gt 1 ];then
- echo $[$1 * $(fac $[$1-1])]
- else
- echo 1
- fi
- }
- fac $1
复制代码
10. 解析进程和线程的区别? 解析进程的结构。
进程和线程的区别
界说和资源分配
进程:进程是资源分配的基本单元,它拥有独立的内存空间、文件描述符等体系资源。当一个程序被启动时,操作体系会为它创建一个进程,这个进程包含了程序运行所需的各种资源,如代码段、数据段、堆和栈等。比方,当打开一个文本编辑器应用程序,操作体系会为这个文本编辑器分配独立的内存地区用于存储程序代码、打开文件的信息以及用户输入的文本等内容,这就是一个进程。
线程:线程是进程内的实行单元,是 CPU 调理的基本单元。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间、文件描述符等。比方,在一个多线程的文本编辑器中,一个线程大概负责接收用户的键盘输入,另一个线程大概负责将用户输入的内容实时保存到文件中,它们共享文本编辑器进程所分配的内存和文件资源。
调理和并发实行
进程:不同进程之间是相互独立的,操作体系通过进程调理器来分配 CPU 时间片给各个进程,使得多个进程可以并发实行。进程切换时,需要切换内存空间等大量的上下文信息,开销较大。比方,当从一个文字处理进程切换到一个音乐播放进程时,操作体系需要保存文字处理进程的全部状态(包括内存中的数据、程序计数器等),然后加载音乐播放进程的状态,这个过程比较复杂,会消耗较多的时间和体系资源。
线程:线程之间的切换相对进程切换来说开销较小,由于线程共享进程的大部分资源,只需要切换少量的线程私有数据(如程序计数器、寄存器等)。在多线程环境下,多个线程可以在同一个进程中并发实行,提高程序的实行效率。比方,在一个网络服务器进程中,多个线程可以同时处理不同客户端的哀求,每个线程在处理哀求时可以快速切换,而不需要像进程那样进行大量的资源切换。
独立性和稳定性
进程:一个进程的崩溃通常不会影响其他进程的正常运行。由于每个进程都有本身独立的资源,就像一个个独立的 “小王国”。比方,如果一个游戏进程崩溃了,一样平常不会导致正在运行的浏览器进程出现标题。
线程:一个线程的崩溃大概会导致整个进程崩溃,由于线程共享进程的资源和地点空间。比方,在一个多线程的数据库应用程序中,如果一个负责数据写入的线程出现严峻错误导致崩溃,大概会影响到整个数据库进程,导致其他线程无法正常工作,甚至整个应用程序崩溃。
进程的结构
程序代码段(Text Segment)
界说:这是进程中存放可实行程序机器指令的部分。它是只读的,多个进程可以共享同一段程序代码。比方,在一个体系中有多个文本编辑器进程同时运行,它们都共享同一份文本编辑器的程序代码,这可以有效地节省内存空间。
作用:提供了进程实行的基本逻辑和操作指令,当进程被调理实行时,CPU 按照代码段中的指令顺序进行操作,从而实现进程的功能。
数据段(Data Segment)
界说:用于存储进程运行过程中使用的全局变量和静态变量。它分为初始化数据段和未初始化数据段。初始化数据段包含了在程序开始实行时就被赋予初始值的变量,而未初始化数据段则是在程序运行时才被分配内存空间,并且在初始时其值是未界说的。比如,一个程序中界说的全局数组在初始化后存储在初始化数据段,而未初始化的全局变量则位于未初始化数据段。
作用:为进程的运行提供数据支持,使得进程可以或许根据不同的数据状态实行相应的操作。数据段中的变量可以在进程的整个生命周期内被访问和修改。
堆(Heap)
界说:这是进程中用于动态分配内存的地区。程序可以在运行过程中通过体系调用(如malloc函数等)在堆上申请任意巨细的内存块,并且这些内存块的生存期由程序员手动控制,即需要手动释放(如使用free函数)。比方,在一个 C 语言程序中,当需要存储一个巨细不确定的动态数组时,可以在堆上分配内存。
作用:支持进程在运行过程中根据实际需求机动地分配和管理内存,以适应各种复杂的数据结构和动态内存使用场景,如链表、树等数据结构的动态创建和销毁。
栈(Stack)
界说:是一种后进先出(LIFO)的数据结构。它用于存储函数调用时的局部变量、函数参数、返回地点等信息。每当一个函数被调用时,体系会在栈上为这个函数分配一个栈帧,栈帧中包含了该函数的局部变量和调用其他函数的参数等。当函数返回时,对应的栈帧会被销毁。比方,在一个递归函数调用中,每次递归调用都会在栈上创建一个新的栈帧,直到到达递归终止条件,然后按照后进先出的原则依次销毁栈帧。
作用:实现函数的调用和返回机制,以及局部变量的存储和管理。同时,栈的巨细在进程创建时通常是固定的,这有助于体系对进程的内存使用进行一定的控制。
进程控制块(PCB - Process Control Block)
界说:这是操作体系用于管理进程的焦点数据结构。它包含了进程的各种紧张信息,如进程标识符(PID)、进程状态(停当、运行、阻塞等)、程序计数器(PC,指向当前实行指令的地点)、CPU 寄存器的值(当进程被切换时,这些寄存器的值需要保存,以便下次规复实行)、进程优先级等。比方,在一个多使命操作体系中,当一个进程从运行状态切换到阻塞状态时,操作体系会把该进程的当前状态(如阻塞缘故原由)、CPU 寄存器的值等信息保存到 PCB 中。
作用:PCB 是操作体系感知进程存在的依据,操作体系通过对 PCB 的操作来实现对进程的调理、切换、资源分配等管理功能。它就像是进程在操作体系中的 “身份证”,记录了进程的全部关键信息。
11. 联合进程管理命令,说明进程各种状态。
在Linux体系中,进程管理命令如ps、top、htop等,可以用于查看和管理体系中运行的进程。这些命令可以或许表现进程的多种状态,帮助体系管理员或用户了解进程的当前环境。以下联合进程管理命令,对进程的各种状态进行说明:
一、进程管理命令
1、ps命令
1)ps命令用于表现体系中当进步程的状态。
2)常用选项包括-e(表现全部进程)、-f(全格式)、-a(表现终端上的全部进程,包括其他用户的进程)、-u(表现指定用户的进程)等。
3)ps aux可以表现全部进程的具体信息,包括进程ID(PID)、用户(USER)、CPU使用率(%CPU)、内存使用率(%MEM)、虚拟内存巨细(VSZ)、实际物理内存巨细(RSS)、终端(TTY)、进程状态(STAT)等。
4)进程状态(STAT)字段的含义如上所述,可以通过该字段了解进程的当前状态。
2、top命令
1)top命令是一个动态表现体系中各个进程的实时状态的工具。
2)它可以表现体系的整体运行环境,包括CPU使用率、内存使用率、各个进程的状态等。
3)在top界面中,可以通过按P键按CPU使用率排序,按M键按内存使用率排序。
4)进程的状态信息可以通过top命令的输出效果中的STAT字段来查看。
3、htop命令
1)htop是top命令的增强版,提供了更友好的界面和更多的功能。
2)它可以使用颜色来表现不同的资源使用环境,并且支持鼠标操作。
3)在htop界面中,可以使用上下箭头选择进程,按F9键终止进程,按F10键退出。
4)进程的状态信息同样可以通过htop命令的输出效果中的相干字段来查看。
二、进程状态概述
进程的基本状态:
创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写
控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调
度运行,把此时进程所处状态称为创建状态。
停当状态:进程已准备好,已分配到所需资源,只要分配到CPU就可以或许立刻运行。
实行状态:进程处于停当状态被调理后,进程进入实行状态。
阻塞状态:正在实行的进程由于某些事件(I/O哀求,申请缓存区失败)而暂时无法运行,进程受
到阻塞。在满足哀求时进入停当状态期待体系调用。
终止状态:进程结束,或出现错误,或被体系终止,进入终止状态。无法再实行。
状态之间转换六种环境:
运行——>停当:1,主要是进程占用CPU的时间过长,而体系分配给该进程占用CPU的时间是有限的;2,在采用争先式优先级调理算法的体系中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由实行状态变化为停当状态。
停当——>运行:运行的进程的时间片用完,调理就转到停当队列中选择合适的进程分配CPU。
运行——>阻塞:正在实行的进程因发生某期待事件而无法实行,则进程由实行状态变为阻塞状态,如发生了I/O哀求。
阻塞——>停当:进程所期待的事件已经发生,就进入停当队列。
以下两种状态是不大概发生的:
阻塞——>运行:纵然给阻塞进程分配CPU,也无法实行,操作体系在进行调理时不会从阻塞队列进行挑选,而是从停当队列中选取。
停当——>阻塞:停当态根本就没有实行,谈不上进入阻塞态。
进程更多的状态:
运行态:running
停当态:ready
就寝态:分为两种,可停止:interruptable,不可停止:uninterruptable
停止态:stopped,暂停于内存,但不会被调理,除非手动启动。
僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死
态的子进程。
12. 说明IPC通讯和RPC通讯实现的方式。
IPC(Inter-Process Communication,进程间通讯)和RPC(Remote Procedure Call,远程过程调用)是两种不同的通讯机制,它们分别实用于不同的场景和实现方式。
IPC通讯实现方式
IPC是指在多道程序环境下,不同进程之间交换数据和信息的过程。在操作体系中,IPC是实现进程协作和数据共享的关键技术之一。IPC通讯的实现方式主要包括以下几种:
管道(Pipe):
管道是最简单的一种IPC方式,实用于具有亲缘关系(如父子进程)的进程间通讯。
在Unix/Linux体系中,通过pipe()体系调用创建管道;在Windows体系中,通过CreatePipe()函数实现。
消息队列(Message Queue):
消息队列是一种存放在内核中的消息链表,允许一个进程向另一个进程发送数据。
它可以实现点对点通讯或发布-订阅模式。
在Unix/Linux体系中,通过msgget()、msgsnd()、msgrcv()等函数实现消息队列;Windows体系也提供了类似的机制。
共享内存(Shared Memory):
共享内存允许多个进程访问同一块物理内存,因此是IPC中最快速的一种方式。
但需要进程间进行同步和互斥操作来避免数据竞争。
在Unix/Linux体系中,通过shmget()、shmat()、shmdt()等函数实现共享内存;Windows体系也提供了类似的机制。
信号量(Semaphore):
信号量用于进程间的同步和互斥,可以控制对共享资源的访问。
在Unix/Linux体系中,通过semget()、semop()等函数实现信号量;Windows体系也有类似的信号量机制。
套接字(Socket):
套接字是一种通用的IPC方式,不仅限于同一台主机上的进程间通讯,还可以在不同主机上的进程之间进行通讯。
套接字通常用于网络编程,但也可以用于本地进程间通讯(如Unix域套接字)。
在Unix/Linux体系和Windows体系中,都有套接字API来支持这种通讯方式。
RPC通讯实现方式
RPC是一种常用的分布式网络通讯协议,它允许运行于一台计算机的程序调用另一台计算机的子程序,同时将网络的通讯细节隐藏起来,使得用户无须额外地为这个交互作用编程。RPC通讯的实现方式通常包括以下几个步骤:
界说服务接口:
在RPC体系中,起首需要界说服务接口,即远程过程调用的方法署名和参数类型。
实现服务接口:
服务提供者实现服务接口中界说的方法,这些方法将作为远程过程被调用。
发布服务:
服务提供者将实现的服务接口发布为远程服务,供其他消耗者调用。
这通常涉及在网络上注册服务,并使其对潜在的消耗者可见。
消耗者调用远程服务:
消耗者通过RPC框架调用远程服务接口中的方法。
RPC框架负责将调用哀求序列化、通过网络传输到服务提供者,并期待服务提供者返回效果。
服务提供者处理哀求并返回效果:
服务提供者接收到调用哀求后,反序列化哀求数据,调用相应的本地方法处理哀求。
处理完成后,将效果序列化并返回给消耗者。
消耗者接收并处理效果:
消耗者接收到返回的效果后,反序列化效果数据,并根据需要进行进一步处理。
RPC通讯的实现方式可以基于不同的传输协媾和序列化机制,如HTTP/HTTPS、TCP/UDP等传输协议,以及JSON、XML、Protobuf等序列化机制。别的,RPC框架(如Dubbo、Motan、Tars、Spring Cloud、gRPC等)也提供了丰富的功能和配置选项,以支持高效的远程过程调用。
综上所述,IPC通讯和RPC通讯在实现方式上有着明显的区别。IPC通讯主要实用于同一台主机上的进程间通讯,而RPC通讯则实用于分布式体系中的远程过程调用。
13. 总结Linux,前台和后台作业的区别,并说明如安在前台和后台中进行状态转换。
1、前台作业和后台作业的区别
一、前台作业
1)界说与特性:前台作业是在终端的前台运行的进程,它会占用终端的输入输出设备。当一个作业在前台运行时,用户需要期待该作业完成才气在同一个终端进行其他操作。比方,当你在终端中运行一个文本编辑器(如vi),这个文本编辑器就是前台作业,你可以直接在终端中输入文本、实行编辑命令等,并且终端的输入焦点就在这个文本编辑器上。
2)交互性:具有较强的交互性,用户可以实时与作业进行交互,比如输入命令、提供数据等操作。并且作业的输出(如打印的文本、错误信息等)会直接表现在终端屏幕上,用户可以立刻看到效果。
二、后台作业
1)界说与特性:后台作业是在终端后台运行的进程,它不占用终端的输入设备,用户可以在终端中继承实行其他命令。后台作业通常用于实行一些不需要用户实时交互或者比较耗时的使命。比方,在终端中编译一个大型的程序,你可以将编译使命放到后台运行,这样你就可以在前台继承使用终端进行其他操作,如查看文件、编辑文档等。
2)交互性与输出:后台作业一样平常没有直接的交互性(除非特别计划),其输出效果(标准输出和标准错误输出)通常会被重定向到特定的位置或者文件中,以免干扰前台作业和终端的正常使用。如果没有进行输出重定向,后台作业的输出大概会在前台表现,但这大概会影响用户正在进行的前台操作。
2、前台和后台之间的状态转换方法
一、将作业放到后台运行(前台转后台)
1)方法一:在命令末端添加 “&” 符号:在 Linux 中,当你要运行一个命令时,在命令的末端加上 “&”,这个命令就会在后台运行。比方,如果你要在后台运行一个find命令来查找文件,你可以输入find / -name "*.txt" &。这样,find命令就会在后台实行,终端会立刻返回命令提示符,允许你在前台继承实行其他命令。
2)方法二:先按 “Ctrl + Z” 组合键暂停当前前台作业,然后使用 “bg” 命令将其放到后台运行:当一个作业正在前台运行时,按下 “Ctrl + Z”,这个作业会被暂停并放入后台的作业列表中,它的状态会变为 “停止(Stopped)”。然后,你可以使用 “bg” 命令将这个暂停的作业放到后台运行。比方,假设一个python脚本正在前台运行,按下 “Ctrl + Z” 后,在终端输入bg,这个python脚本就会在后台继承运行。
二、将后台作业放到前台运行(后台转前台)
1)使用 “fg” 命令:如果有多个作业在后台运行,你可以使用 “jobs” 命令查看后台作业列表及其编号。然后,使用 “fg % n” 命令(其中 “n” 是后台作业的编号)将指定的后台作业放到前台运行。比方,通过 “jobs” 命令看到后台有一个编号为 1 的作业,输入 “fg %1”,这个后台作业就会被放到前台运行,终端的输入输出焦点就会转移到这个作业上。
三、后台运行转后台停止
1)使用 “Ctrl + Z” 组合键:当一个后台作业正在运行时,在终端中输入 “Ctrl + Z”,可以暂停这个后台作业,使其状态从运行变为停止。比方,有一个后台运行的find命令来查找文件,在终端输入 “Ctrl + Z” 后,这个find命令就会暂停,并且体系会给出相应的提示信息,如 “[1]+ Stopped find /-name "*.txt"”,这里的 “[1]+” 是作业编号,“Stopped” 表现作业状态为停止。
2)使用 “kill” 命令发送信号:可以通过 “kill” 命令向后台运行的作业发送特定信号来使其停止。比方,发送 SIGSTOP 信号(信号值为 19)可以停止一个后台运行的作业。假设一个后台作业的进程 ID(PID)为 1234,使用命令 “kill -19 1234” 就可以使这个作业停止运行。不外这种方式需要事先知道作业的 PID,可以通过 “ps -ef | grep < 进程相干关键字 >” 来查找进程的 PID。
四、后台停止转后台运行
1)使用 “bg” 命令:如果一个作业处于后台停止状态,可以使用 “bg” 命令让它在后台继承运行。起首,通过 “jobs” 命令查看后台作业列表及其编号。假设一个后台停止的作业编号为 2,在终端输入 “bg %2”,这个作业就会在后台重新运行。比方,之前被 “Ctrl + Z” 暂停的find命令,通过 “jobs” 找到其编号后,使用 “bg” 命令可以让它继承在后台查找文件。
2)使用 “kill” 命令发送信号(SIGCONT):另一种方式是通过 “kill” 命令发送 SIGCONT 信号(信号值为 18)来使后台停止的作业继承运行。同样需要知道作业的 PID,假设后台停止作业的 PID 为 5678,使用命令 “kill -18 5678” 就可以让这个作业在后台规复运行。这种方法在需要通过脚本等主动化方式控制作业状态时比较有效。
14. 实现定时使命,逐日凌晨1点,删除指定文件(本身创建即可)
15. 实现定时使命每月月初对指定文件进行压缩(本身创建文件)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |