当前位置: 首页 > news >正文

Linux 进程和计划任务管理

目录

  • 一. 前言
  • 二. 进程
    • 2.1 什么是进程
    • 2.2 程序和进程的关系
    • 2.3 进程,线程和协程
    • 2.4 进程常用管理命令
      • (1) ps
      • (2) top
      • (3) pgrep
      • (4) pstree
      • (5) prtstat
      • (6) uptime
      • (7) w
      • (8) who
      • (9) jobs
      • (10) fg & bg
      • (11) kill
      • (12) pkill
      • (13) lsof
  • 三. 计划任务
    • 3.1 一次性计划任务 -- at
    • 3.2 周期性计划任务 -- crontab
  • 四. 总结

一. 前言

        根据维基百科的定义,进程(Process)是计算机中已运行程序的实体。用户下达运行程序的命令后,就会产生进程。进程需要一些资源才能完成工作,如 CPU 使用时间、存储器、文件以及 I/O 设备,且为依序逐一进行,也就是每个 CPU 核心任何时间内仅能运行一项进程。在 linux 中,为了更好的了解和使服务器有序运行,管理员需要对进程和计划任务做相应的操作,以便能够更好的完成维护任务。

二. 进程

2.1 什么是进程

        Process: 运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位

  1. 进程 ID(Process ID,PID)号码被用来标记各个进程
  2. UID、GID、和 SELinux 语境决定对文件系统的存取和访问权限
  3. 通常从执行进程的用户来继承
  4. 存在生命周期

2.2 程序和进程的关系

  1. 程序是永存的,进程是暂时的。进程是程序在数据集上的一次执行,可以创建也可以撤销
  2. 程序是静态的观念,进程是动态的观念
  3. 进程具有并发性,而程序没有
  4. 进程是竞争计算机资源的基本单位,程序不是
  5. 进程和程序不是一一对应的,一个程序可对应多个进程, 一个进程也可以执行一个或几个程序

2.3 进程,线程和协程

线程(Thread):
  有时被称为轻量级进程,是操作系统调度(CPU调度)执行的最小单位。一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。进程的个体间是完全独立的,而线程间是彼此依存的。多进程环境中,任何一个进程的终止,不会影响到其他进程。而多线程环境中,父线程终止,全部子线程被迫终止(没有了资源)。
  #查看进程中的线程::cat /proc/PID/status |grep -i threads
协程(Coroutine):
  协程是用户模式下的轻量级线程,最准确的名字应该叫用户空间线程(User Space Thread)。协程不是被操作系统内核所管理,而是完全由应用程序来控制。一个线程可以包含一个或多个协程,协程拥有自己的寄存器上下文和栈,协程调度切换时,将寄存器上下文和栈保存起来,在切换回来时恢复先前保运的寄存上下文和栈。

2.4 进程常用管理命令

(1) ps

ps(process status)命令用于显示当前进程的状态
格式::ps [options] [–help]

参数含义
-a显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息
-u使用以用户为主的格式输出进程信息
-x显示当前用户在所有终端下的进程信息
-e显示所有进程
-f使用完整的格式显示进程信息
-l使用长格式显示进程信息

常用组合:ps [-aux] [-ef] [-elf]
示例

[root@c7-1 ~]#ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 191004  3916 ?        Ss   10:53   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    10:53   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   10:53   0:00 [kworker/0:0H]
root          5  0.0  0.0      0     0 ?        S    10:53   0:01 [kworker/u256:0]
......
#上述输出信息中,第一行为列表标题,其中各字段的含义描述如下
USER:启动该进程的用户账号的名称
PID:该进程在系统中的数字 ID 号,在当前系统中是唯一的
%CPU:CPU 占用的百分比
%MEM:内存占用的百分比
VSZ:该进程使用的虚拟内存量(KB)
RSS:该进程占用的物理内存量(KB)
TTY:表明该进程在哪个终端上运行。不是从终端启动的进程则显示为?
STAT:该进程的状态
START:启动该进程的时间
TIME:该进程占用的 CPU 时间
COMMAND:启动该进程的命令的名称
#STAT 状态类型
-D:不可被唤醒的睡眠状态,通常用于 I/O 情况
-R:该进程正在运行
-S:该进程处于睡眠状态,可被唤醒
-T:停止状态,可能是在后台暂停或进程处于除错状态
-W:内存交互状态(从 2.6 内核开始无效)
-X:死掉的进程(通常不会出现)
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中
-<:高优先级(以下状态在 BSD 格式中出现)
-N:低优先级
-L:被锁入内存
-s:包含子进程
-l:多线程
-+:位于后台
-C:进程占用 CPU 的百分比[root@c7-1 ~]#ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 47751 ep_pol 10:53 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root          2      0  0  80   0 -     0 kthrea 10:53 ?        00:00:00 [kthreadd]
1 S root          4      2  0  60 -20 -     0 worker 10:53 ?        00:00:00 [kworker/0:0H]
1 S root          5      2  0  80   0 -     0 worker 10:53 ?        00:00:01 [kworker/u256:0]
1 S root          6      2  0  80   0 -     0 smpboo 10:53 ?        00:00:00 [ksoftirqd/0]
......
#各列标题含义
F:内核分配给进程的系统标记
S:进程的状态
UID:启动这些进程的用户
PID:进程的进程 ID
PPID:父进程的进程号(如果该进程是由另一个进程启动的)
C:进程生命周期中的 CPU 利用率
PRI:进程的优先级(越大的数字代表越低的优先级)
NI:谦让度值用来参与决定优先级
ADDR:进程的内存地址
SZ:假如进程被换出,所需交换空间的大致大小
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
STIME:进程启动时的系统时间
TTY:进程启动时的终端设备(pts 代表虚拟终端,一般是远程连接的终端;tty 代表本地控制台终端)
TIME:运行进程需要的累计CPU时间
CMD:进程的启动命令#指定属性排序,CentOS6 以下版本不支持
ps axo pid,cmd,%cpu,%mem k -%cpu#按内存倒序排序
ps axo pid,cmd,%cpu,%mem --sort -%mem#使用watch实用程序执行重复的输出以实现对就程进行实时的监视,如下面的命令显示每秒钟的监视
watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'#查看僵尸进程
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'#查找僵死进程,然后将父进程杀死
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

(2) top

top 命令用于查看进程动态信息
格式:top [-] [选项] […]

参数含义
d改变显示的更新速度
c显示整个命令行而不只是显示命令名
p通过指定 PID 来监控某个进程的状态
S累积模式,会将己完成或消失的子行程的 CPU time 累积起来
s安全模式,将交互式指令取消, 避免潜在的危机
i不显示任何闲置或者僵死进程
n更新的次数,完成后将会退出 top

示例

#显示进程信息
top
#显示完整命令
top -c
#以批处理模式显示程序信息
top -b
#以累积模式显示程序信息
top -S
#设置信息更新次数,更新两次后终止更新显示
top -n 2
#设置信息更新时间,更新周期为3秒
top -d 3
#显示指定的进程信息
top -p PID
#使用者将不能利用交谈式指令来对行程下命令
top -s

(3) pgrep

通过特定条件查询进程信息
格式:pgrep [选项] [匹配条件]

参数含义
-l同时显示进程名和 PID
-P指定父进程号
-u匹配有效用户 ID
-U匹配实际用户 ID
-g匹配列出的进程组 ID
-G匹配真实组 ID
-t指定开启进程的终端
-o当匹配多个进程时,显示进程号最小的那个
-n当匹配多个进程时,显示进程号最大的那个

示例

[root@c7-1 ~]#pgrep -l sshd
3471 sshd
4172 sshd
[root@c7-1 ~]#ps aux|grep sshd
root       3471  0.0  0.1 112920  4320 ?        Ss   8月17   0:00 /usr/sbin/sshd -D
root       4172  0.0  0.1 161532  6076 ?        Ss   8月17   0:00 sshd: root@pts/1
root       4644  0.0  0.0 112728   972 pts/1    T    8月17   0:00 grep --color=auto sshd
root       4693  0.0  0.0 112728   968 pts/1    S+   00:25   0:00 grep --color=auto sshd

(4) pstree

pstree 可以用来显示进程的父子关系,以树形结构显示
格式:pstree [OPTION] [ PID | USER ]

参数选项
-a选项可以列出完整的命令信息
-p选项使用时可以同时列出对应的 PID 号
-u选项可以列出对应的用户名

示例

#系统如无 pstree 命令执行 yum -y install psmisc
[root@c6-1 ~]#pstree -aup root
init,1├─NetworkManager,1731 --pid-file=/var/run/NetworkManager/NetworkManager.pid├─abrtd,2078├─acpid,1846├─atd,2120├─auditd,1612
......

(5) prtstat

可以显示进程信息,来自于 psmisc 包
格式:prtstat [options] PID …
选项:-r raw 格式显示
示例

[root@c7-1 ~]#prtstat -r 1pid: 1              	                  comm: systemdstate: S              	                  ppid: 0pgrp: 1              	               session: 1tty_nr: 0              	                 tpgid: -1flags: 402100         	                minflt: 17726cminflt: 1388146        	                majflt: 55
......

(6) uptime

系统负载查询
格式:uptime [options]

参数选项
-p显示系统运行了多长时间
-s显示系统启动的日期/时间

示例

[root@c7-1 ~]#uptime08:50:36 up 14:17,  1 user,  load average: 0.00, 0.01, 0.05
#每一栏含义
系统当前时间 
up表示系统正在运行 
14:17是系统启动的总时间 
当前上线人数
系统负载:1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报

(7) w

w 命令用于显示目前登入系统的用户信息
格式:w [-fhlsuV] [用户名称]
示例

[root@c7-1 ~]#w09:05:57 up 14:33,  1 user,  load average: 0.02, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    20.0.0.1         08:27    5.00s  0.03s  0.00s w

(8) who

who 命令用于显示系统中有哪些使用者正在上面
格式:who - [husfV] [user]

参数含义
-H显示标题栏
-u显示闲置时间
-q只显示登入系统的帐号名称和总人数

示例

[root@c7-1 ~]#who
root     pts/0        2021-08-18 08:27 (20.0.0.1)
[root@c7-1 ~]#who -q
root
# 用户数=1

(9) jobs

查看当前有多少在后台运行的进程
格式:jobs [选项]

参数含义
-l列出进程的 PID 和作业号
-p只列出进程的 PID
-s只列出停止的进程
-r只列出运行的进程

示例

#nohup command > file 2>&1   指定日志文件目录 
[root@c7-1 ~]#nohup /usr/sbin/httpd &	#后台启动 httpd 并输出日志信息
[1] 5057
[root@c7-1 ~]#nohup: 忽略输入并把输出追加到"nohup.out"[1]+  完成                  nohup /usr/sbin/httpd
[root@c7-1 ~]#tail -f nohup.out		#ctrl + z 挂起进程
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 112.4.20.188. Set the 'ServerName' directive globally to suppress this message
^Z
[1]+  已停止               tail -f nohup.out
[root@c7-1 ~]#ps aux|grep nohup.out		#查找挂起的进程
root       5064  0.0  0.0 107996   616 pts/0    T    09:28   0:00 tail -f nohup.out
root       5066  0.0  0.0 112728   984 pts/0    S+   09:28   0:00 grep --color=auto nohup.out
[root@c7-1 ~]#jobs
[1]+  已停止               tail -f nohup.out
[root@c7-1 ~]#jobs -l
[1]+  5064 停止                  tail -f nohup.out

(10) fg & bg

  1. bg
    将一个在后台暂停的命令变成继续执行
  2. fg
    将后台中的命令调至前台继续运行
  3. jobs
    查看当前有多少在后台运行的命令
  4. ctrl + z
    可以将一个正在前台执行的命令放到后台,并且暂停

(11) kill

kill 命令用于删除进程
格式:kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]

参数含义
-l <信息编号>若不加信息编号选项,则会列出全部的信息编号
-s <信息名称或编号>指定要送出的信息

最常用的信号是
1 (HUP):重新加载进程
9 (KILL):杀死一个进程
15 (TERM):正常停止一个进程
示例

[root@c7-1 ~]#ps aux|grep httpd
root       5588  0.0  0.0 112728   972 pts/0    S+   10:17   0:00 grep --color=auto httpd
[root@c7-1 ~]#service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@c7-1 ~]#ps -ef|grep httpd
root       5605      1  0 10:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5606   5605  0 10:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5607   5605  0 10:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5608   5605  0 10:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5609   5605  0 10:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5610   5605  0 10:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       5616   4853  0 10:18 pts/0    00:00:00 grep --color=auto httpd
[root@c7-1 ~]#kill 5605
[root@c7-1 ~]#ps -ef|grep httpd
root       5624   4853  0 10:18 pts/0    00:00:00 grep --color=auto httpd

(12) pkill

根据特定条件终止相关进程
格式:pkill [选项] [条件]

参数含义
-t通过控制终端进行匹配
-u匹配有效用户 ID
-U匹配实际用户 ID
-g匹配列出的进程组 ID
-G匹配真实组 ID
-P指定父进程号发送信号

示例

[root@c7-1 ~]#ps -ef|grep httpd
root       5726   4853  0 10:39 pts/0    00:00:00 grep --color=auto httpd
[root@c7-1 ~]#service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@c7-1 ~]#ps -ef|grep httpd
root       5743      1  0 10:39 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5744   5743  0 10:39 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5745   5743  0 10:39 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5746   5743  0 10:39 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5747   5743  0 10:39 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     5748   5743  0 10:39 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       5750   4853  0 10:39 pts/0    00:00:00 grep --color=auto httpd
[root@c7-1 ~]#pkill httpd	#根据名称杀掉 httpd 进程
[root@c7-1 ~]#ps -ef|grep httpd
root       5760   4853  0 10:39 pts/0    00:00:00 grep --color=auto httpd

(13) lsof

lsof(list open files)是一个查看进程打开的文件的工具
选项

-a:列出打开文件存在的进程
-c<进程名>:列出指定进程所打开的文件
-u:列出UID号进程详情
-g:列出GID号进程详情
-d<文件号>:列出占用该文件号的进程
+d<目录>:列出目录下被打开的文件
+D<目录>:递归列出目录下被打开的文件
-n<目录>:列出使用NFS的文件
-i<条件>:列出符合条件的进程( IPV(4/6)协议	:端口	@ip )
-p<进程号>:列出指定进程号所打开的文件
-n: 不反向解析网络名字

示例

#列出所有打开的文件:
lsof
#查看谁正在使用某个文件
lsof /path/file
#递归查看某个目录的文件信息,+D 对应目录下的所有子目录和文件都会被列出
lsof +D /filepath/filepath2/
#遍历查看某个目录的所有文件信息 
lsof | grep '/filepath/filepath2/'
#列出某个用户打开的文件信息
lsof -u username
#列出某个程序所打开的文件信息
lsof -c mysql
#列出多个程序打开的文件信息
lsof -c mysql -c apache
#列出某个用户以及某个程序所打开的文件信息
lsof -u test -c mysql
#列出除了某个用户外的被打开的文件信息,^ 表示取反
lsof -u ^root
#通过某个进程号显示该进程打开的文件
lsof -p 1
#列出多个进程号对应的文件信息
lsof -p 123,456,789
#列出除了某个进程号,其他进程号所打开的文件信息
lsof -p ^1
#列出所有的网络连接
lsof -i
#列出所有 tcp 网络连接信息
lsof -i tcp
#列出所有 udp 网络连接信息
lsof -i udp
#列出谁在使用某个端口
lsof -i:3306
#列出谁在使用某个特定的 udp 端口
lsof -i udp:55
#特定的tcp端口
lsof -i tcp:80
#列出某个用户的所有活跃的网络端口
lsof -a -u user -i
#某个用户组所打开的文件信息
lsof -g 5555
#根据文件描述列出对应的文件信息
lsof -d description(like 2)
#根据文件描述范围列出文件信息
lsof -d 2-3

三. 计划任务

3.1 一次性计划任务 – at

格式:at [HH:MM] [yyyy-mm-dd]
没有 at 命令执行 yum -y install at

示例

[root@c7-1 ~]#yum -y install at &> /dev/null
[root@c7-1 ~]#systemctl start atd
[root@c7-1 ~]#systemctl status atd |grep activeActive: active (running) since 三 2021-08-18 12:26:07 CST; 2min 50s ago
[root@c7-1 ~]#date
2021年 08月 18日 星期三 12:32:36 CST
[root@c7-1 ~]#at 12:34 2021-08-18
at> echo "hello world" > /root/test.txt
at> <EOT>
job 4 at Wed Aug 18 12:34:00 2021
[root@c7-1 ~]#ll
总用量 4
-rw-r--r-- 1 root root 12 818 12:34 test.txt
[root@c7-1 ~]#cat test.txt 
hello world

3.2 周期性计划任务 – crontab

主要配置文件

  1. 全局配置文件,位于文件:/etc/crontab
  2. 系统默认的设置,位于目录:/etc/cron.*/
  3. 用户定义的设置,位于文件:/var/spool/cron/用户名

常用命令格式

  1. crontab -e [-u 用户名] #编辑计划任务
  2. crontab -l [-u 用户名] #查看计划任务
  3. crontab -r [-u 用户名] #删除计划任务

crontab 任务配置格式:[分钟] [小时] [日期] [月份] [星期] [命令]

字段说明
分钟取值为从 0 到 59 之间的任意整数
小时取值为从 0 到 23 之间的任意整数
日期取值为从 1 到 31 之间的任意整数
月份取值为从 1 到 12 之间的任意整数
星期取值为从 0 到 7 之间的任意整数,0 或 7 代表星期日
命令要执行的命令或程序脚本

时间数值的特殊表示方法

  1. ( * )表示该范围内的任意时间
  2. ( ,)表示间隔的多个不连续时间点
  3. ( - )表示一个连续的时间范围
  4. ( / ) 指定间隔的时间频率
    示例
#安排一个 cron 在每天凌晨 2 点执行
0 2 * * * /scripts/script.sh
#安排一个 cron 每天上午 5 点和下午 5 点执行
0 5,17 * * * /scripts/script.sh
#安排一个 cron 每分钟执行一次
* * * * * /scripts/script.sh
#安排一个 cron 在每周日下午 5 点执行
0 17 * * sun /scripts/script.sh
#安排一个 cron 每 10 分钟执行一次
*/10 * * * * /scripts/monitor.sh
#安排一个 cron 在选定的月份执行
* * * jan,may,aug * /script/script.sh
#安排一个 cron 在选定的日期执行
0 17 * * sun,fri /script/script.sh
#安排一个 cron 在每个月的第一个星期日执行
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh
#安排一个 cron 每四个小时执行一次
0 */4 * * * /scripts/script.sh
#安排一个 cron 在每个星期日和星期一执行两次
0 4,17 * * sun,mon /scripts/script.sh
#安排一个 cron 每 30 秒执行一次
* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh
#在单个 cron 中安排多个任务
* * * * * /scripts/script.sh;/scripts/scrit2.sh
#安排任务每年执行,@yearly 时间戳类似于 0 0 1 1 * ,它会在每年的第一分钟执行一项任务
@yearly /scripts/script.sh
#安排任务每月执行,@monthly 时间戳类似于 0 0 1 * * ,它将在每月的第一分钟执行任务
@monthly /scripts/script.sh
#安排每周执行的任务,@weekly 时间戳类似于 0 0 * * mon ,它将在一周的第一分钟执行一项任务
@weekly /bin/script.sh
#安排每天执行的任务,@daily 时间戳类似于 0 0 * * * ,它将在每天的第一分钟执行一项任务
@daily /scripts/script.sh
#安排任务每小时执行一次,@hourly 时间戳类似于 0 * * * * ,它将在每小时的第一分钟执行一项任务
@hourly /scripts/script.sh
#安排在系统重启时执行的任务
@reboot /scripts/script.sh
#将 cron 结果重定向到指定的电子邮件帐户
https://www.jb51.cc/linux/396373.html
#将所有 cron 备份到纯文本文件
crontab -l > cron-backup.txt

四. 总结

         服务器上运行着大量应用,必然也伴随着大量的进程,运维管理人员经常需要对进程进行管理优化。而计划调度命令可以在一定程度上减少运维的工作量,能够熟练的使用计划调度命令是非常重要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35194.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

怎么把台式电脑的大量数据快速迁移到笔记本

大家在工作中&#xff0c;难免会同时用到台式电脑和笔记本&#xff0c;而一些文件也经常会在两种设备之间互相传输。有时文件太多&#xff0c;尤其是还有一些大文件的情况下&#xff0c;普通的数据迁移方式&#xff0c;例如用U盘拷贝&#xff0c;就不太适用&#xff0c;传输速度…...

Python IDE 详细攻略,拿去吧你~

本文介绍了多个 Python IDE&#xff0c;并评价其优缺点 读者可以参考此文列举的 Python IDE 列表&#xff0c;选择适合自己的编辑器 写 Python 代码最好的方式莫过于使用集成开发环境&#xff08;IDE&#xff09;了。它们不仅能使你的工作更加简单、更具逻辑性&#xff0c;还…...

Janus ASP.NET 套件,完整的控件工具包

Janus Web ASP.NET 服务器控件套件是一个完整的控件工具包&#xff0c;可为您的 ASP.NET 应用程序提供丰富的用户界面。 Janus Web GridEx、用于创建专业布局的 Janus Web UIPanelManager、Janus UICallbackManager 和 Janus Web UICommandManager 只是 Janus Web GridEx 中包含…...

P2058 [NOIP2016 普及组] 海港 题解

P2058 [NOIP2016 普及组] 海港 题解 题目描述 小K是一个海港的海关工作人员&#xff0c;每天都有许多船只到达海港&#xff0c;船上通常有很多来自不同国家的乘客。 小K对这些到达海港的船只非常感兴趣&#xff0c;他按照时间记录下了到达海港的每一艘船只情况&#xff1b;对…...

FOXIT PDF SDK 8.1 ALL Crack

Foxit PDF SDK&#xff08;Windows版&#xff09; 提供三种库&#xff1a;C库、C#&#xff08;.NET&#xff09;库、和Java库&#xff0c;Ω578867473在客户端和服务端环境下均可运行&#xff08;32位和64位系统&#xff09;。 查看PDF 我们的核心API针对桌面和移动平台进行了优…...

ZZULIOJ 1009: 求平均分

题目描述 已知某位学生的数学、英语和计算机课程的成绩&#xff0c;求该生三门课程的平均分。 输入 输入三个整数&#xff0c;数据之间由空格隔开。 输出 输出占一行&#xff0c;包含一个实数&#xff0c;为三门课的平均分&#xff0c;保留两位小数。 样例输入 87 73 93…...

第1天学习打卡(SMBMS 邮件发送 原理、发送简单文本邮件、发送带图片和附件邮件)

六、邮件收发 电子邮件 要在网络上实现邮件功能&#xff0c;必须要有专门的邮件服务器。 这些邮件服务器类似于现实生活中的邮局&#xff0c;它主要负责接收用户投递过来的邮件&#xff0c;并把邮件投递到邮件接收者的电子邮箱中。 SMTP服务器地址&#xff1a;一般是smtp.x…...

小码哥【Java从0到架构师】wangpan学习记录

Java 从 0 到 架构师 第一阶段&#xff1a;Java 基础语法 第二阶段&#xff1a;JavaEE 基石 基本概念 环境搭建 Servlet_JSP MySQL 基础 多表查询 JDBC、Spring JDBC、JUnit JS_jQuery_BootStrap Maven 会话跟踪 Cookie_Session Filter_Listener_AJAX 第二阶段项目实战 - 个人…...

Java基础学习一 基本数据类型

关联博客&#xff1a;https://www.jianshu.com/p/f5ed637a59f9 基本数据类型 1.Java程序体解读 //public 表示公开的 //class 表示一个类 //Helloworld表示一个类名 public class HelloWorld {/** 类体* public 表示公开的* static 表示静态的* void 表示空* main …...

java对象的生命周期是什么

前言 疫情过去&#xff0c;真正的春暖花开又回来了&#xff0c;时不时的可以和朋友约个饭&#xff0c;感慨今年的工作竞争压力很大&#xff0c;工作很不好找。作为一个开发人员&#xff0c;你是否面上了理想的公司&#xff0c;拿到了理想中的薪资&#xff1f; 作为程序员&…...

前端项目中将Token存储在请求头(Authorization)

1.将数据存储在Vuex中管理 export default new Vuex.Store({state: {// 存储tokenAuthorization: localStorage.getItem(Authorization) ? localStorage.getItem(Authorization) : },mutations: {// 修改token&#xff0c;并将token存入localStoragechangeLogin (state, user…...

[论文阅读]《Database Maanagement Systems》-第九章

第九章 TREE-STRUCTURED INDEXING 树结构索引 &#xff08;P271-301&#xff09; gracefully 优雅的 适当的 because it adjusts well to changes 因为它能很好地适应变化 page boundaries 页面边界 preferable [[ˈprefrəbl]] 更好的 direct [[dəˈrekt; daɪˈrekt]] 管…...

ET源码学习(十三):CoroutineLock

在第八节消息分发时有下面这个代码 可以看到下面代码中有一个叫做协程锁的组件&#xff0c;并且利用了using包裹起来了&#xff0c;这个就是协程锁。主要用途是确保只有一个协程对对象进行操作。具体可以参考烟雨大佬B站讲解&#xff08;https://www.bilibili.com/video/BV12J…...

jmeter压测学习5-XPath提取器

前言 有些web项目是前后端不分离的&#xff0c;返回的内容不是那种纯进口返回json格式&#xff0c;返回的是一个HTML页面。 并且有些参数是隐藏在html里面的&#xff0c;需要先从html页面中取出隐藏参数&#xff0c;如&#xff1a;csrfmiddlewaretoken 场景案例 我这里有个d…...

Layui快速入门(2021.06.15)

第一步&#xff1a;下载layui文件 第二步&#xff1a;新建项目&#xff0c;导入下载的文件夹 第三步&#xff1a;参考文档开发 1.layui入门html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>la…...

《 算法图解 》—— 读书笔记(一)

《 算法图解 》—— 读书笔记&#xff08;一&#xff09;1 算法简介2 选择排序这个笔记这么复制粘贴没有什么意义&#xff0c;还是要转化成自己的语言&#xff0c;看着我记过的笔记&#xff0c;一章一章地“复述出来”才有价值&#xff0c;我的输出才重要&#xff0c;无用功一点…...

grafana模板大全

原文&#xff1a;https://www.jianshu.com/p/367d52fe1171 前言&#xff1a; 本篇文章分三部分来介绍常用的grafana模板,数据来源均为prometheus。数据来源为zabbix或其他的请绕行&#xff01; 第一部分 监控容器 推荐ID31468685100008588315 优化315 第二部分 监控物理机…...

1 Linux简介

1 Linux简介 1.1 环境安装与配置 1.1.1 网址访问 https://cloud.tencent.com/act/double11? https&#xff1a;协议。配置sll证书&#xff0c;才有https协议&#xff0c;否则只有http协议。 cloud.tencent.com&#xff1a;80 域名&#xff0c;即IP地…...

系统安全性和保密性设计

一、安全性和保密性设计 计算机及信息技术的应用领域在不断扩展&#xff0c;计算机在政府、企业、民生等各个领域中都得到越来越广泛的应用。与此同时&#xff0c;网络攻击和入侵事件与日俱增&#xff0c;重要机构的信息系统遭黑客袭击的事件时有发生。攻击者可以从容地对那些…...

Linux驱动---IO模型

1、什么是IO 在计算机系统中I/O就是输入和输出的意思&#xff0c;只要具有输入输出类型的交互系统都可以认为是I/O系统 也可以说I/O是整个操作系统数据交换与人机交互的通道 针对不同的操作对象&#xff0c; 可以划分为磁盘I/O模型&#xff0c;网络I/O模型&#xff0c;内存映…...

什么是服务网格(Service Mesh)

本文来说下什么是服务网格 文章目录概述概述...

【力扣1044. 最长重复子串】二分查找+Rabin-Karp 字符串编码、后缀数组(Python3)

题目描述 https://leetcode-cn.com/problems/longest-duplicate-substring/ 思路题解 方法一&#xff1a;二分查找Rabin-Karp 字符串编码 https://leetcode-cn.com/problems/longest-duplicate-substring/solution/zui-chang-zhong-fu-zi-chuan-by-leetcode/ class Solut…...

Nuxt 项目完结总结

1、状态保存&#xff0c;即localstorage。 这里选择了 nuxt-vuex-localstorage&#xff08;^1.3.0&#xff09; 来做store的持久化保存。 modules: [nuxtjs/style-resources,nuxtjs/axios,[nuxt-vuex-localstorage,{localStorage: [localStorage]}] ] 2、登录token保存&…...

Prometheus rate和irate查询实现

rate 该函数用来计算某个指标在最近一个区间时间内的变化率。 比如说&#xff0c;Prometheus每15秒采集一次数据&#xff0c;当某个指标metric1的数据采集如下&#xff1a; timestampvalue15:00:001000015:00:151003015:00:301004515:00:4510090 假设当前时间为15:00:50&…...

第十二周.直播.DGL-KG, LifeSci讲解

文章目录知识图谱背景DGL-KELifeSci双线性系列RESCAL摘要2. Modelling and Notation模型DistMult摘要模型ConvE为什么是2D不是1D卷积模型本文内容整理自深度之眼《GNN核心能力培养计划》公式输入请参考&#xff1a; 在线Latex公式DGL有三个比较知名的开源库&#xff0c;DGL-KG,…...

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

这是因为服务端在LISTEN状态下&#xff0c;收到建立连接请求的SYN报文后&#xff0c;把ACK和SYN放在一个报文里发送给客户端。 而关闭连接时&#xff0c;当收到对方的FIN报文时&#xff0c;仅仅表示对方不再发送数据了但是还能接收数据&#xff0c;己方是否现在关闭发送数据通…...

get_calib_data_observ_points算子说明

算子作用&#xff1a;从标定板中读取圆心数据 函数声明&#xff1a; get_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx, CalibObjPoseIdx : Row, Column, Index, Pose)参数说明&#xff1a; CalibDataID&#xff0c;标定参数模型句柄CameraIdx&#…...

NC66 两个链表的第一个公共结点

描述 输入两个无环的单链表&#xff0c;找出它们的第一个公共结点。&#xff08;注意因为传入数据是链表&#xff0c;所以错误测试数据的提示是用其他方式显示的&#xff0c;保证传入数据是正确的&#xff09; 示例1 输入&#xff1a; {1,2,3},{4,5},{6,7} 复制返回值&…...

PyScreeze 基本使用(1)

PyScreeze 基本使用&#xff08;1&#xff09; PyScreeze屏幕截图 PyScreeze是Python 2和3的一个简单的跨平台屏幕截图模块。 关于 PyScreeze可以拍摄截图&#xff0c;将它们保存到文件中&#xff0c;并在屏幕中定位图像。这是有用的&#xff0c;如果你有一个小的图像&#x…...

ABB喷涂机器人吹扫系统的主要作用

ABB喷涂机器人吹扫系统主要作用是什么 两个字&#xff1a;防爆&#xff01; ABB喷涂 何处简单爆&#xff1f; 如下喷涂机械臂部位 ABB机器人 那么防爆是什么原理 通过吹扫系统不断向机械臂内部输入气体&#xff08;压力可控&#xff09;使机械手内部形成稳定的安全过压环…...

python对windows系统要求_Python在windows平台的多版本配置

快速阅读&#xff1a;​ python在windows平台的环境变量以及多版本配置 &#xff0c;以及pycharm如何安装包&#xff0c;以及安装包出错时如何排查。1.python环境变量官网下载&#xff1a;当前有两个主要版本&#xff0c;两个我们都下载一下&#xff0c;因为有的程序是苦于pyth…...

大学计算机实验实验报告,大学计算机实验3 实验报告.doc

文档介绍&#xff1a;深圳大学实验报告课程名称: 计算机基础实验名称: 文字信息处理学院: 建筑与城市规划学院专业: 建筑学报告人: XXX 学号: 2015XXXX 班级: XXXXXX同组人:指导教师: 李炎然实验时间: 2015.11.04实验报告提交时间: 2015.11.05教务处制一.实验目的1. 掌握文档的…...

Windows操作系统的模拟实现 C++

Windows操作系统的模拟实现 C文件结构自定义的命令操作部分代码1.数据结构2.部分功能演示大学期间的设计汇总文件结构 自定义的命令操作 编号命令代码含义1dir显示文件夹下所有文件2cr filename创建文件3mkdir foldername创建文件夹4ch old_name new_name更改文件(夹)名字5cd …...

PHP 几分钟前 几小时前 昨天 前天 时间戳转换格式

// 发布时间提示 function getFormatCreateTime($createTime) {// 当天最大时间$todayLast strtotime(date(Y-m-d 23:59:59));$agoTimeTrue time() - $createTime;$agoTime $todayLast - $createTime;$agoDay floor($agoTime / 86400);if ($agoTimeTrue < 60) {$result …...

Android 时间戳 转换成 多少天前、多少小时前、多少分钟前

最新深海发现一个非常好用的方法,分享给大家 DateUtils.getRelativeTimeSpanString("时间戳").toString(); 返回结果为: "1天前 "或者 "1小时前"或者 "1分钟前" 1.不用任何转换 直接使用即可 2.DateUtils 类 是Android 独有的工具…...

sql server查询**分钟前的数据记录

太常用了,sql语句总是记不住,记录一下,【Table】—表名,【DateTime】查询的时间字段,-5代表5分钟前; Select * from dbo.[Table] where [DateTime] > dateadd(minute,-5,GETDATE())...

获取当前时间30分钟前的时间

import java.util.Calendar;public static String getMinuteAgoTime () {String minute "" ;Date date new Date();//获取当前时间 Calendar calendar Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MINUTE, -30);// 30分钟…...

开发技术-获取10分钟前的时间

SimpleDateFormat&#xff1a;用于日期格式化 Calendar&#xff1a;用于时间操作 Date&#xff1a;用于获取时间 java 日期格式化-- SimpleDateFormat 的使用。字符串转日期&#xff0c;日期转字符串​​​​​​ Java Calendar 日历类的时间操作 Timestamp Date Calendar …...

dayjs -- 如何显示类似 “1分钟前“、“3小时内“ 格式

dayjs显示格式1. 安装2. 引入dayjs3. 如何显示 "1分钟前"、"3小时内" 格式1. 安装 npm i dayjs 2. 引入dayjs main.js import dayJs from dayjs import Vue from vue Vue.prototype.dayjs dayJs如此就全局挂载了dayjs&#xff0c;随时可使用。 如&…...

时间计算,几天前、几分钟前、几秒前、

//计算时间差public function time_tran($time){$ttime()-$time;$farray(31536000>年,2592000>月,//604800>星期,86400>天,3600>小时,60>分钟,1>秒);foreach ($f as $k>$v){if(0 !$cfloor($t/(int)$k)){return $c.$v.前;}}}...

Linux删除指定时间的文件(比如几分钟前(后),几天前(后))

要执行这个命令分三步&#xff1a; 1、先找出该目录下名字符合的文件&#xff1b; 2、过滤出指定时间内的文件&#xff1b; 3、执行删除命令。 1 找出指定条件的文件 - find 命令 比如找出当前目录下的所有txt文件 find ./ -name *.txt2 找出指定时间的文件 找出最后20分钟内…...

JS转换时间戳为“刚刚”、“1分钟前”、“2小时前”“1天前”等格式

var minute 1000 * 60; var hour minute *60; var day hour *24; var week day * 7; var month day * 30; function getTimer(stringTime){var time1 new Date().getTime();//当前的时间戳console.log(time1);var time2 Date.parse(new Date(stringTime));//指定时间的时…...

flutter 几秒前, 几分钟前, 几小时前, 几天前...

Show me the code!!! class RelativeDateFormat {static final num ONE_MINUTE 60000;static final num ONE_HOUR 3600000;static final num ONE_DAY 86400000;static final num ONE_WEEK 604800000;static final String ONE_SECOND_AGO "秒前";static final St…...

Android 时间格式化(刚刚、x分钟前、x小时前、昨天、x天前、xx月xx日、xxxx年xx月xx日)

最近公司项目在搞动态相关的&#xff0c;产品昨天给出了时间格式&#xff0c;下午花了一点时间搞了一下&#xff0c;分享给大家。 1 分钟以内&#xff1a;刚刚 1-2分钟&#xff1a;1分钟前 过了1个小时&#xff08;60分钟以内使用xx分钟前&#xff09;&#xff1a;1小时前 过了…...

Android 当前时间差,返回几分钟前、几小时前、几个月前

总DateUtil时间工具类地址&#xff1a; 需求&#xff1a; 以前的一个时间和当前时间多对比&#xff0c;返回几分钟前、几小时前、几个月前、几年前 代码&#xff1a; /*** 时间差** param date* return*/public static String getTimeFormatText(Date date) {long minute …...

JAVA如何实现留言时间(几秒前,几分钟前,几小时前....)的功能

toc 简介 最近在web前端需要实现将一个发布或创建日期转换显示为是几秒前&#xff0c;几分钟前…参考来自stackoverflow上的代码&#xff1a; import java.util.Date;public class TimeCountUtil {private static final long ONE_MINUTE 60000L; private static final lon…...

Linux中定时清除指定目录中30分钟前生成的特定文件

1.首先创建一个脚本文件&#xff0c;我们举例文件名称为clearBigtrc03.sh。 cd /home vi clearBigtrc03.sh 2.在文件中输入清除指定目录中30分钟前生成的脚本。 假设需要清除的目录为/oracle/app/oracle/diag/rdbms/minos/minos/trace&#xff1b; 需要清除30分钟前生成的&…...

SQL 看10分钟前的数据

2019独角兽企业重金招聘Python工程师标准>>> select * from xxxx as of timestamp sysdate - 10/1440 转载于:https://my.oschina.net/u/3503613/blog/1589174...

mysql 1分钟前_mysql 数据库取前后几秒 几分钟 几小时 几天的语句

取当前时间&#xff1a;select current_timestamp;输出&#xff1a;2016-06-16 16:12:52select now();输出&#xff1a;2016-06-16 16:12:52取当前时间的前一分钟&#xff1a;select SUBDATE(now(),interval 60 second);输出&#xff1a;2016-06-16 16:11:52取当前时间的下一分…...

JQuery计算几分钟前,几小时,几天前

假设时间 date2017-02-05 00:00:00.000&#xff1b; 得到的结果 Script代码 var FormatDate getDateTimeStamp(date);var ReleaseTime getDateDiff(FormatDate);console.log(ReleaseTime);//js函数代码&#xff1a;字符串转换为时间戳function getDateTimeStamp(dateSt…...