首页 > 系统相关 >网络配置及进程-系统性能和计划任务

网络配置及进程-系统性能和计划任务

时间:2024-11-18 20:30:43浏览次数:1  
标签:systemd 0.0 性能 网络 echo 进程 root localhost

目录

虚拟机联网

查看IP地址

#centos系列!

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.93.200  netmask 255.255.255.0  broadcast 192.168.93.255
        inet6 fe80::20c:29ff:fe0c:5043  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0c:50:43  txqueuelen 1000  (Ethernet)
        RX packets 78  bytes 8852 (8.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 81  bytes 9229 (9.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


ifconfig命令查看ip或者用ip r命令查看路由和网关,如果这两个命令都无法显示ip地址,操作步骤如下:
首先输入ip addr,查看ens33(不一定是ens33)网卡配置,输入 vi /etc/sysconfig/network-scripts/ifcfg-ens33
将ONBOOT权限改为yes

设置静态IP(NAT模式)

#centos系列
注意:配置静态ip时不能起冲突,可以先在本机ping一下你想要配置的ip,ping得通就不要用,ping超时可以使用。

[root@linux-server ~]# cd /etc/sysconfig/network-scripts/  #网卡配置文件存放路径
[root@linux-server network-scripts]# cp ifcfg-ens33 ifcfg-ens33.bak #将源文件备份
[root@linux-server network-scripts]# vi ifcfg-ens33 #编辑网卡配置文件
TYPE="Ethernet"         #网络类型:以太网类型
PROXY_METHOD="none"   
BROWSER_ONLY="no"
BOOTPROTO="static"    #默认值none或static 这两种属于静态获取ip地址,dhcp自动获取ip
IPADDR=192.168.93.200 #设置静态ip地址
GATEWAY=192.168.93.2 #设置网关,nat模式网关是2,桥接为1
NETMASK=255.255.255.0  #设置子网掩码
#PREFIX=24
DEFROUTE="yes"  #是否设置默认路由,yes表示该配置
NAME="ens33"    #网卡名称,可以不存在
DEVICE="ens33"   #设备名称
ONBOOT="yes"    #开机启动
DNS1=114.114.114.114 #dns全国通用地址,dns最多可以设置三个
DNS2=8.8.8.8 #谷歌的dns
DNS3=202.106.0.20 #北京的DNS。

#重启网络
[root@linux-server ~]# systemctl restart NetworkManager  #centos8以后
[root@linux-server ~]# systemctl restart network         #centos7

ubuntu配置静态IP

#查找网络接口
root@ubuntu:~# ip link  

#编辑 netplan 配置文件
root@ubuntu:~# vi /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 192.168.93.201/24
      gateway4: 192.168.93.2
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
#配置生效
root@ubuntu:~# netplan apply

shell脚本实例

使用脚本判断主机所在网络内在线的主机IP有哪些

#!/bin/bash

subnet="192.168.1"  #定义子网前缀
start=1
end=254   #ip地址范围

#使用ping 测试一个 IP 地址
#函数
ping_test() {
    local ip=$1
    if ping -c 1 -W 2 $ip &> /dev/null; #发送一个 ICMP 请求,超时时间为 2 秒 
 then
        echo "$ip is online"
    fi
}

#遍历子网中的所有 IP 地址
for ((i=start; i<=end; i++))
do
    ip="$subnet.$i"
    ping_test $ip &  #调用 ping_test 函数,并将其放在后台执行(使用 &)
done

# 等待所有后台进程完成
wait

[root@linux-server ~]# chmod +x network.sh
[root@linux-server ~]# .network.sh
or
[root@linux-server ~]# bash network.sh

使用while read line和/etc/passwd,计算用户id总和

#!/bin/bash

# 初始化用户ID总和变量
total_uid=0

# 读取 /etc/passwd 文件的每一行
while IFS=: read -r username password uid gid info home shell; do
    # 将当前行的UID加到总和中
    total_uid=$((total_uid + uid))
done < /etc/passwd  #指定输入文件为 /etc/passwd

# 输出用户ID总和
echo "Total UID sum: $total_uid"

解读:

使用 IFS=: 指定字段分隔符为冒号,读取/etc/passwd 文件的每一行,并将字段分别赋值给 username、password、uid、gid、info、home 和 shell 变量。

使用递归调用,完成阶乘算法实现

#!/bin/bash

# 定义递归阶乘函数
factorial() {
    local n=$1
    if [[ $n -eq 0 ]]; then
        echo 1
    else
        echo $(( n * $(factorial $((n - 1))) ))
    fi
}

# 测试阶乘函数
for i in {0..10}; do
    result=$(factorial $i)
    echo "$i! = $result"
done

解读:

定义递归函数:
* factorial() 是一个递归函数,接受一个参数 n。
* 如果 n 等于 0,返回 1(因为 0!=1),
否则,返回 n 乘以 factorial(n - 1) 的结果。

测试阶乘函数:
* 使用 for 循环从 0 到 10 测试阶乘函数。
* 调用 factorial 函数并将结果存储在 result 变量中。
* 输出结果。

求10个随机数的最大值与最小值

#!/bin/bash

# 创建索引数组
random_numbers=(1 3 100 9 10 18 0 77 96 2)

# 初始化最大值和最小值
max_value=${random_numbers[0]}
min_value=${random_numbers[0]}

# 遍历数组,找到最大值和最小值
for num in "${random_numbers[@]}"; do
    if [[ $num -gt $max_value ]]; then
        max_value=$num
    fi
    if [[ $num -lt $min_value ]]; then
        min_value=$num
    fi
done

# 输出最大值和最小值
echo "Maximum value: $max_value"
echo "Minimum value: $min_value"

索引数组和关联数组,字符串处理,高级变量

索引数组
特点

  • 索引数组的键是整数,通常从0开始。
  • 键值是自动生成的,除非显式指定。

范例:
# 创建索引数组
array=(apple banana pear)

# 访问元素
echo "${array[0]}"    # 输出: apple
echo "${array[1]}"    # 输出: banana
echo "${array[2]}"    # 输出: pear

# 获取数组长度
echo "${#array[@]}"   # 输出: 3

# 遍历数组
for fruit in "${array[@]}"; do
    echo "$fruit"
done

# 添加元素
array+=("date")
echo "${array[@]}"    # 输出: apple banana pear date

# 删除元素
unset array[1]
echo "${array[@]}"    # 输出: apple pear date

关联数组
特点

  • 关联数组的键可以是任意字符串。
  • 需要在声明时使用 declare -A。
范例:
# 声明关联数组
declare -A fruits

# 添加元素
fruits[apple]="red"
fruits[banana]="yellow"
fruits[pear]="green"

# 访问元素
echo "${fruits[apple]}"   # 输出: red
echo "${fruits[banana]}"  # 输出: yellow
echo "${fruits[pear]}"  # 输出: green

# 获取所有键
echo "${!fruits[@]}"      # 输出: apple banana pear

# 获取所有值
echo "${fruits[@]}"       # 输出: red yellow green

# 遍历数组
for key in "${!fruits[@]}"; do
    echo "$key: ${fruits[$key]}"
done

# 删除元素
unset fruits[banana]
echo "${!fruits[@]}"      # 输出: apple pear

字符串处理
常用命令和操作

  • length=${#string}:获取字符串长度。
  • substring=${string:start:length}:获取子字符串。
  • replace=${string//pattern/replacement}:替换字符串中的模式。
  • lowercase=${string,,}:转换为小写。
  • uppercase=${string^^}:转换为大写。

范例:
# 定义字符串
string="Hello, World!"

# 获取字符串长度
length=${#string}
echo "Length: $length"    # 输出: Length: 13

# 获取子字符串
substring=${string:0:5}
echo "Substring: $substring"    # 输出: Substring: Hello

# 替换字符串中的模式
replace=${string//World/Universe}
echo "Replace: $replace"    # 输出: Replace: Hello, Universe!

# 转换为小写
lowercase=${string,,}
echo "Lowercase: $lowercase"    # 输出: Lowercase: hello, world!

# 转换为大写
uppercase=${string^^}
echo "Uppercase: $uppercase"    # 输出: Uppercase: HELLO, WORLD!

高级变量使用
参数扩展

  • ${variable:-default}:如果变量未设置或为空,则使用默认值。
  • ${variable:=default}:如果变量未设置或为空,则设置变量为默认值。
  • ${variable:?message}:如果变量未设置或为空,则输出错误消息并退出。
  • ${variable:+other}:如果变量已设置且非空,则使用其他值。

范例:
# 参数扩展
variable=""
echo "${variable:-default}"    # 输出: default
echo "${variable:=default}"    # 变量现在被设置为 "default"
echo "${variable:?error message}"    # 输出: default
echo "${variable:+other}"    # 输出: other

# 未设置变量的情况
unset variable
echo "${variable:-default}"    # 输出: default
echo "${variable:=default}"    # 变量现在被设置为 "default"
echo "${variable:?error message}"    # 输出: default
echo "${variable:+other}"    # 不输出,因为变量已设置

综合示例

#!/bin/bash

# 定义索引数组
fruits=("apple" "banana" "pear")

# 定义关联数组
declare -A colors
colors[apple]="red"
colors[banana]="yellow"
colors[cherry]="green"

# 遍历索引数组并打印颜色
for fruit in "${fruits[@]}"; do
    color=${colors[$fruit]}
    echo "The color of $fruit is ${color:-unknown}"
done

# 字符串处理
sentence="The quick brown fox jumps over the lazy dog."
length=${#sentence}
echo "Sentence length: $length"

# 替换字符串中的单词
new_sentence=${sentence//fox/tiger}
echo "New sentence: $new_sentence"

# 参数扩展
default_value="default"
value=""
echo "Value: ${value:-$default_value}"    # 输出: Value: default

# 设置变量
unset value
echo "Value: ${value:=set_now}"
echo "Value: $value"    # 输出: Value: set_now

# 检查变量
unset value
echo "Value: ${value:?Variable not set}"    # 输出错误消息并退出

进程管理

进程的生命周期状态

创建状态:

  • 进程正在被创建,但尚未准备好执行
  • 进程的资源尚未完全分配,例如内存、文件描述符等
  • 一旦资源分配完成,进程将从新建状态进入就绪状态

就绪状态:

  • 进程已经准备好执行,但尚未获得 CPU 时间片。
  • 进程在就绪队列中等待调度器分配 CPU 时间。
  • 当调度器选择该进程时,进程将从就绪状态进入执行状态。

执行状态:

  • 进程正在 CPU 上执行。
  • 进程占用 CPU 资源,执行其指令。
  • 如果进程的时间片用完,将从运行状态进入就绪状态。
  • 如果进程等待某个事件(如 I/O 操作完成),将从运行状态进入阻塞状态。
  • 如果进程执行完毕或被终止,将从执行状态进入终止状态。

阻塞状态:

  • 进程暂时停止执行,等待某个事件的发生,例如 I/O 操作完成、锁的释放等。
  • 进程不在 CPU 上执行,而是等待某个外部条件满足。
  • 当等待的事件发生时,进程将从阻塞状态进入就绪状态。

终止状态:

  • 进程已经完成执行或被异常终止。
  • 进程的资源被释放,不再占用系统资源。
  • 进程进入终止状态后,通常会被操作系统清理,从进程表中移除。

特殊状态:
僵尸(Zombie)

  • 进程已经终止,但其父进程尚未调用 wait 系统调用来回收其状态信息。
  • 进程表项仍然存在,但不占用系统资源。
  • 当父进程调用 wait 后,僵尸进程将被彻底清除。

僵死(Defunct)

  • 类似于僵尸状态,但通常用于描述更长时间未能被回收的进程。
  • 进程表项仍然存在,但不占用系统资源。
  • 当父进程调用 wait 后,僵死进程将被彻底清除。

进程与线程的区别

进程(Process)

  • 定义:进程是操作系统分配资源的最小单位。每个进程都有独立的内存空间。
  • 资源:每个进程拥有独立的虚拟地址空间、文件描述符、环境变量等资源。
  • 隔离性:进程之间是完全隔离的,一个进程的崩溃不会影响其他进程。

线程(Thread)

  • 定义:线程是程序执行的CPU调度的最小单位。一个进程中可以有多个线程,这些线程共享同一内存空间和其他资源。
  • 资源:线程共享所属进程的虚拟地址空间,但每个线程有自己的栈和程序计数器(PC)。
  • 隔离性:线程之间的隔离性较差,一个线程的错误可能会影响整个进程中的其他线程。
#查看进程中的线程
grep -i threads /proc/PID/status

进程的结构

代码段(Text Segment)

  • 存放程序的机器指令。
  • 通常是只读的,防止程序意外修改自身代码。

数据段(Data Segment)

  • 存放全局变量和静态变量。
  • 分为初始化数据区和未初始化数据区(BSS段)。

堆(Heap)

  • 动态分配的内存区域,用于存放动态分配的数据(如通过 malloc 和 new 分配的内存)。
  • 堆内存的大小是可以变化的,通常是从低地址向高地址增长。

栈(Stack)

  • 用于存放函数调用时的局部变量和函数参数。
  • 栈内存是自动管理的,函数调用时自动分配,函数返回时自动释放。
  • 栈通常是从高地址向低地址增长。

文件描述符表(File Descriptor Table)

  • 存放进程打开的所有文件描述符。
  • 每个文件描述符对应一个文件或设备。

环境变量(Environment Variables)

  • 存放进程的环境变量,如 PATH、HOME 等。
  • 环境变量在进程启动时从父进程继承。

进程控制块(Process Control Block, PCB)

  • 操作系统用于管理进程的数据结构。
  • 包括进程的标识符(PID)、状态(运行、就绪、阻塞等)、优先级、资源使用情况等。

进程状态

#ps aux 或者 htop 或者 top
[root@localhost ~]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.2 172252 10304 ?        Ss   01:17   0:02 /usr/lib/systemd/systemd -
root           2  0.0  0.0      0     0 ?        S    01:17   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   01:17   0:00 [rcu_gp]

#STAT代表了进程的状态
Ss:进程处于休眠状态,并且是一个会话领导进程
R (Running):进程正在运行或在运行队列中
S (Sleeping):进程处于休眠状态,等待某个事件发生(如 I/O 操作完成)
D (Disk Sleep):进程处于不可中断的睡眠状态,通常是因为正在进行 I/O 操作。
T (Stopped):进程被停止。
Z (Zombie):进程已经完成执行,但其父进程尚未调用 wait 系统调用回收其状态信息。
t (Tracing Stop):进程因跟踪而停止,通常是在调试过程中。
W (Paging):进程正在交换(换页),即部分内存页面被换出到磁盘。
L (Has Pages Locked into Memory):进程有页面被锁定在内存中,不允许换出。
X (Dead):进程已经死亡,但在进程表中仍保留条目。
< (High Priority):进程具有高优先级。
N (Low Priority):进程具有低优先级。

IPC通信实现方式


#进程间通信(IPC):主要用于同一台计算机上不同进程之间的通信

匿名管道:仅限于父子进程之间通信,单向。使用 pipe() 系统调用创建匿名管道。
命名管道(FIFO):可以在不相关的进程之间使用,双向。使用 mkfifo() 系统调用创建命名管道。

信号:用于进程间发送简短的通知消息。使用 kill() 发送信号。使用 signal() 或 sigaction() 注册信号处理函数。

共享内存:允许多个进程访问同一块内存区域。
* 使用 shmget() 创建或获取共享内存段。
* 使用 shmat() 将共享内存段附加到进程的地址空间。
* 使用 shmdt() 从进程的地址空间分离共享内存段。
* 使用 shmctl() 控制共享内存段。

消息队列:允许进程间发送和接收消息。
* 使用 msgget() 创建或获取消息队列。
* 使用 msgsnd() 发送消息。
* 使用 msgrcv() 接收消息。
* 使用 msgctl() 控制消息队列。

信号量:用于同步进程间的访问,防止竞争条件。
* 使用 semget() 创建或获取信号量集。
* 使用 semop() 进行信号量操作。
* 使用 semctl() 控制信号量集。

RPC通信实现方式


#远程过程调用(RPC):主要用于跨网络的不同计算机之间的通信

Sun RPC:
* 使用 rpcgen 工具生成客户端和服务器端的代码。
* 定义 .x 文件,描述远程过程的接口。

gRPC:
* 定义 .proto 文件,描述服务接口和消息格式。
* 使用 protoc 编译器生成客户端和服务器端的代码。

Apache Thrift:
* 定义 .thrift 文件,描述服务接口和数据结构。
* 使用 thrift 编译器生成客户端和服务器端的代码。

XML-RPC:基于 XML 和 HTTP 的简单 RPC 协议。
* 使用 HTTP 请求发送 XML 格式的请求和响应。
* 支持多种编程语言,如 Python、Perl 等。

前台作业与后台作业

定义:
前台作业是指当前正在终端上运行的任务,它会独占终端,用户必须等待该作业完成或手动停止后才能继续输入其他命令。

特点:
* 用户可以看到作业的输出。
* 用户不能在前台作业运行时输入其他命令。
* 前台作业可以接收来自键盘的输入。
定义:
后台作业是指在后台运行的任务,不会独占终端,用户可以在作业运行的同时继续输入其他命令。

特点:
* 用户看不到作业的输出,除非重定向输出。
* 用户可以在后台作业运行时继续输入其他命令。
* 后台作业不能接收来自键盘的输入。
状态转换:
* 使用 Ctrl+Z 和 bg 将前台作业转到后台。
* 使用 fg 将后台作业转到前台。
* 使用 jobs 查看当前作业。
* 使用 kill + 作业编号/进程PID 结束作业。

进程管理相关操作


#搜索进程
ps aux:显示所有用户的进程详细信息。
ps -ef:显示所有进程的详细信息。
ps -p <PID>:显示指定 PID 的进程信息。

pgrep 选项 pattern

选项:
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程


#负载查询
uptime 和 w 显示以下内容:
当前时间
系统已启动的时间
当前上线人数
系统平均负载(1、5、15分钟的平均负载)
[root@localhost ~]# uptime
 04:16:12 up  2:58,  1 user,  load average: 0.06, 0.04, 0.00

[root@localhost ~]# w
 04:16:30 up  2:58,  1 user,  load average: 0.04, 0.03, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.93.1     01:17    0.00s  0.04s  0.00s w


#虚拟内存信息
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3150508   6304 370536    0    0     7     2   26   42  0  0 100  0  0



#统计CPU和设备IO信息
此工具由sysstat包提供
[root@localhost ~]# iostat
Linux 4.18.0-348.el8.0.2.x86_64 (localhost.localdomain) 	2024年11月18日 	_x86_64_    (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.01    0.01    0.17    0.00    0.00   99.81

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.03         0.87         0.00       9855          4
sda               0.75        25.83         8.79     293953     100019
scd0              0.00         0.09         0.00       1041          0
dm-0              0.66        21.03         8.61     239283      97935
dm-1              0.01         0.20         0.00       2220          0
dm-2              0.00         0.09         0.00       1044          0


#显示网络带宽使用情况
#通过EPEL源的 iftop 包
[root@localhost ~]# iftop -ni ens33


#查看网络实时吞吐量
#通过EPEL源提供
[root@localhost ~]# nload
#nload 是一个实时监控网络流量和带宽使用情况,以数值和动态图展示进出的流量情况,


#查看进程实时状态 top 和 htop
#htop由EPEL源提供
[root@localhost ~]# top
top - 04:20:56 up  3:03,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 168 total,   1 running, 167 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.1 hi,  0.1 si,  0.0 st
MiB Mem :   3709.8 total,   3076.1 free,    265.7 used,    368.0 buff/cache
MiB Swap:   3072.0 total,   3072.0 free,      0.0 used.   3214.1 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND              
    556 root      20   0       0      0      0 I   0.3   0.0   0:07.87 kworker/0:3-events   
      1 root      20   0  172252  10304   7924 S   0.0   0.3   0:02.39 systemd              
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.02 kthreadd             
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp               
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp      

losf命令

格式:losf [options] <...>
选项:
-a:列出打开文件存在的进程
-c<进程名>:列出指定进程所打开的文件
-g:列出GID号进程详情
-d<文件号>:列出占用该文件号的进程
+d<目录>:列出目录下被打开的文件
+D<目录>:递归列出目录下被打开的文件
-n<目录>:列出使用NFS的文件
-i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件
-u:列出UID号进程详情
-h:显示帮助信息
-v:显示版本信息。
-n: 不反向解析网络名字

范例:

#列出当前所有打开的文件
[root@localhost yum.repos.d]# lsof|head
COMMAND    PID  TID TASKCMD      USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1                   root  cwd       DIR              253,0       269        128 /
systemd      1                   root  rtd       DIR              253,0       269        128 /
systemd      1                   root  txt       REG              253,0   1597128     443680 /usr/lib/systemd/systemd
systemd      1                   root  mem       REG              253,0   2191840   50332852 /usr/lib64/libm-2.28.so
systemd    


#查看当前哪个进程正在使用此文件
[root@localhost yum.repos.d]# lsof /usr/lib/systemd/systemd
COMMAND   PID USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
systemd     1 root txt    REG  253,0  1597128 443680 /usr/lib/systemd/systemd
systemd  1766 root txt    REG  253,0  1597128 443680 /usr/lib/systemd/systemd
(sd-pam) 1768 root txt    REG  253,0  1597128 443680 /usr/lib/systemd/systemd


#指定进程号,可以查看该进程打开的文件
[root@localhost yum.repos.d]# lsof -p 22
COMMAND   PID USER   FD      TYPE DEVICE SIZE/OFF NODE NAME
watchdog/  22 root  cwd       DIR  253,0      269  128 /
watchdog/  22 root  rtd       DIR  253,0      269  128 /
watchdog/  22 root  txt   unknown                      /proc/22/exe


#查看指定程序打开的文件
[root@localhost yum.repos.d]# lsof -c httpd


#查看指定用户打开的文件
[root@localhost yum.repos.d]# lsof -u root | more 

计划任务

一次调度执行(at):
主要的用途是定期备份数据

语法格式
at <时间规格>
  now +5min
  teatime tomorrow (teatime is 16:00)
  5pm august 3 2019 

范例1:
[root@linux-server ~ ]# yum -y install at
[root@linux-server ~]# systemctl status atd    #查看启动状态
[root@linux-server ~ ]# systemctl start atd		#首先要启动服务

[root@linux-server ~]# at now +1min    #一分钟后开始执行
at> useradd uuuu  
at> <EOT>     	#Ctrl+D 退出
job 1 at Sat Mar 21 22:34:00 2015

[root@linux-server ~]# id uuuu

范例2:
[root@linux-server ~]# vim at.jobs 
useradd u99 
useradd u00 
touch /a.txt

[root@linux-server ~]# at 20:33 < at.jobs

循环调度执行cron 用户级

cron任务分为:
系统cron任务:系统维护作业,/etc/crontab 主配置文件, /etc/cron.d/ 子配置文件
用户cron任务:红帽系统保存在 /var/spool/cron/USERNAME,Ubuntu系统存放在/var/spool/cron/crontabs/USERNAME,利用 crontab 命令管理
计划任务日志:/var/log/cron
[root@localhost ~]# systemctl status crond
[root@localhost ~]# systemctl start crond


crontab -l	 #列出当前用户的计划任务
crontab -r	 #删除当前用户所有的计划任务
crontab -e	 #编辑当前用户的计划任务
crontab -u meng -e  #使用meng用户创建
crontab -u meng -l  #查看meng用户的计划任务
管理员可以使用 -u username, 去管理其他用户的计划任务


语法格式 :
Minutes   Hours    Day-of-Month    Month    Day-of-Week    Command 
 分钟	     小时	        日			 月		   周		   执行的命令,最好是命令的绝对路径
 0-59	  0-23  	  1-31         1-12	      0-7

时间:
*:每
*/5:每隔5分钟
,:不同的时间段
- : 表示范围

[root@linux-server ~]# crontab -e	#当前用户编写计划任务

每天6:00执行
0 6 * * *  /home/soso.sh

每天8:40执行
40 8 * * * /home/soso.sh

每周六凌晨4:00执行
0 4 * * 6  /home/soso.sh

每周六凌晨4:05执行
5 4 * * 6  /home/soso.sh 

每周一到周五9:30
30 9 * * 1-5  /home/soso.sh

每周一到周五8:00,每周一到周五9:00
0 8,9 * * 1-5   /home/soso.sh

每天0:30
30 0 * * *    /home/soso.sh

每年6月的周五2:00整
00 02 * 6 5   /home/soso.sh

每月1,5,8号的2:00整
00 02 1,5,8 * *   /home/soso.sh

每月1到8号的2:00整
00 02 1-8 * *   /home/soso.sh


[root@linux-server ~]# crontab -l    #列出计划任务

范例:
#每日凌晨1点,删除指定文件
[root@localhost ~]# crontab -e
[root@localhost spool]# crontab -l
* 1 * * * rm -f /home/meng/file8.txt


#实现定时任务每月月初对指定文件进行压缩
#每个月的一号的凌晨1:00执行
[root@localhost ~]# crontab -e
[root@localhost ~]# crontab -l
* 1 * * * rm -f /home/meng/file8.txt
00 1 1 * *  /root/tar.sh


[root@localhost ~]# cat tar.sh
#!/bin/bash

PATH="/root/file.txt"
BACKUP="/root/bakups"
DATE=$(date +\%Y|%m\%d)

mkdir -p $BACKUP

tar -czf $BACKUP/file_$DATE.tar.gz $PATH

[root@localhost ~]# chmod -x /root/tar.sh

标签:systemd,0.0,性能,网络,echo,进程,root,localhost
From: https://www.cnblogs.com/mqhLearn/p/18552978

相关文章

  • 20222425 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容本周学习内容:本周我学习的章节是Meatsploit渗透测试技术。在本章的学习中,首先,我了解了Metasploit,这是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的shellcode。其实在之前的免杀技术的那一章我们就使用过这个工具,当时就对这个工具的功能深深......
  • 20222304 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容1.1实验要求(1)掌握metasploit、nmap的用法。(2)学习前期渗透的方法。(3)利用4个漏洞,实现对靶机的攻击。1.2学习内容(1)metasploit的用法:可以简单总结为“Search-Use-Show-Set-Exploit/run”。(2)四种漏洞的原理。a.Vsftpd后门漏洞:在某些特定版本的vsftpd服务......
  • 20222422 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    一、实验内容本实践目标是掌握metasploit的用法。指导书参考Rapid7官网的指导教程。https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/下载官方靶机Metasploitable2,完成下面实验内容。用户名密码均为:msfadmin(1)前期渗透①主机发现(可用Aux中的ar......
  • 20222420 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    202224202024-2025-1《网络与系统攻防技术》实验六实验报告1.实验内容(1)前期渗透①主机发现(可用Aux中的arp_sweep,search一下就可以use)②端口扫描:可以直接用nmap,也可以用Aux中的portscan/tcp等③选做:也可以扫系统版本、漏洞等。(2)Vsftpd源码包后门漏洞(21端口)漏洞原理:在特......
  • Linux网络操作系统项目教程2
    项目1安装与配置Linux操作系统文中新建用户,目录,文件一律为mahaoran多建文件,用户,目录会说明任务1-1安装过程(简写)二、新建虚拟机打开虚拟机软件,选择“新建虚拟机”。在“新建虚拟机向导”中,选择“自定义”模式。选择虚拟机兼容性,一般选择默认即可。三、配置虚拟机硬件选择稍后安装操......
  • # 20222309 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容本实践目标是掌握metasploit的用法。指导书参考Rapid7官网的指导教程。https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/下载官方靶机Metasploitable2,完成下面实验内容。(1)前期渗透①主机发现(可用Aux中的arp_sweep,search一下就可以use)......
  • 基于人工神经网络的混凝土干燥收缩预测模型优化
    1.引言混凝土的干燥收缩是指混凝土在硬化过程中由于水分蒸发而引起的体积减少。这一过程可能导致裂缝的产生,进而影响混凝土结构的耐久性和安全性。传统的参数化模型(如ACI209、CEB、B3和GL2000)虽然在一定程度上能够预测干燥收缩,但它们通常需要大量的实验数据,并且在处理复杂条......
  • 服务端性能优化
    优化代码优化识别出性能瓶颈点循环优化算法优化减少函数调用内存管理并发和多线程代码重构编译器优化缓存优化内存缓存分布式缓存浏览器缓存cdn缓存缓存粒度控制缓存失效策略缓存预热缓存一致性异步优化非阻塞操作提高资源利用率多线程优化线......
  • 浅谈网络文件系统原理
    本文分享自天翼云开发者社区《浅谈网络文件系统原理》,作者:谢****云什么是网络文件系统?网络文件系统(NetworkFileSystem,NFS)实现了一种软件协议,能将远端的文件系统映射到本地,使用者访问网络上的文件就像在使用自己的计算机一样。远端是专属存储系统,通常称为NAS存储。比较出名的......
  • Linux 下网络套接字(Socket) 与udp和tcp 相关接口
    文章目录1.socket常见API2sockaddr结构体及其子类1.sockaddr结构体定义(基类)2.子类sockaddr_in结构体用于(IPv4)3子类sockaddr_un(Unix域套接字)4.总结画出其结构体3.实现一个简单的tcpEcho服务器和客户端(cpp)3.1客户端3.2服务器3.3测试结果1.socket常......