定义:
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
关系:
1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
2) 线程的划分尺度小于进程,使得多线程程序的并发性高。
3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。此时程序就运行不了,系统会提示内存溢出,有时候会自动关闭软件,重启电脑或者软件后释放掉一部分内存又可以正常运行该软件,而由系统配置、数据流、用户代码等原因而导致的内存溢出错误,即使用户重新执行任务依然无法避免
pstree [OPTION] [PID | USER]
示例:
[19:03:49 root@Centos8 ~]#pstree 1 systemd─┬─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─agetty ├─atd ├─auditd───{auditd} ├─automount───4*[{automount}] ├─crond ├─dbus-daemon ├─httpd─┬─httpd │ ├─httpd───80*[{httpd}] │ └─2*[httpd───64*[{httpd}]] ├─irqbalance───{irqbalance} ├─master─┬─pickup │ └─qmgr ├─polkitd───5*[{polkitd}] ├─rngd───{rngd} ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd───sshd───bash───pstree ├─sssd─┬─sssd_be │ └─sssd_nss ├─systemd───(sd-pam) ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───3*[{tuned}] └─vmtoolsd───{vmtoolsd}
[19:14:25 root@Centos8 ~]#pstree -T systemd─┬─NetworkManager ├─VGAuthService ├─agetty ├─atd ├─auditd ├─automount ├─crond ├─dbus-daemon ├─httpd───4*[httpd] ├─irqbalance ├─master─┬─pickup │ └─qmgr ├─polkitd ├─rngd ├─rsyslogd ├─sshd───sshd───sshd───bash───pstree ├─sssd─┬─sssd_be │ └─sssd_nss ├─systemd───(sd-pam) ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned └─vmtoolsd
[19:14:58 root@Centos8 ~]#pstree -pT systemd(1)─┬─NetworkManager(828) ├─VGAuthService(823) ├─agetty(935) ├─atd(934) ├─auditd(800) ├─automount(923) ├─crond(930) ├─dbus-daemon(826) ├─httpd(844)─┬─httpd(1152) │ ├─httpd(1153) │ ├─httpd(1154) │ └─httpd(1155) ├─irqbalance(829) ├─master(1007)─┬─pickup(1008) │ └─qmgr(1009) ├─polkitd(830) ├─rngd(822) ├─rsyslogd(893) ├─sshd(846)───sshd(1371)───sshd(1383)───bash(1384)───pstree(1971) ├─sssd(825)─┬─sssd_be(865) │ └─sssd_nss(906) ├─systemd(1374)───(sd-pam)(1377) ├─systemd-journal(643) ├─systemd-logind(925) ├─systemd-udevd(678) ├─tuned(848) └─vmtoolsd(824)
[19:15:31 root@Centos8 ~]#pstree -u systemd─┬─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─agetty ├─atd ├─auditd───{auditd} ├─automount───4*[{automount}] ├─crond ├─dbus-daemon(dbus) ├─httpd─┬─httpd(apache) │ ├─httpd(apache)───80*[{httpd}] │ └─2*[httpd(apache)───64*[{httpd}]] ├─irqbalance───{irqbalance} ├─master─┬─pickup(postfix) │ └─qmgr(postfix) ├─polkitd(polkitd)───5*[{polkitd}] ├─rngd───{rngd} ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd───sshd───bash───pstree ├─sssd─┬─sssd_be │ └─sssd_nss ├─systemd───(sd-pam) ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───3*[{tuned}] └─vmtoolsd───{vmtoolsd}
常用选项:
ps输出属性
示例:
查看进程详细信息
[20:15:28 root@Centos8 ~]#ps -ef 列C表示CPU利用率 UID PID PPID C STIME TTY TIME CMD root 1 0 0 17:45 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --sys root 2 0 0 17:45 ? 00:00:00 [kthreadd] root 3 2 0 17:45 ? 00:00:00 [rcu_gp] root 4 2 0 17:45 ? 00:00:00 [rcu_par_gp] root 6 2 0 17:45 ? 00:00:00 [kworker/0:0H-kblockd] root 8 2 0 17:45 ? 00:00:00 [mm_percpu_wq] root 9 2 0 17:45 ? 00:00:00 [ksoftirqd/0] root 10 2 0 17:45 ? 00:00:00 [rcu_sched] root 11 2 0 17:45 ? 00:00:00 [migration/0] root 12 2 0 17:45 ? 00:00:00 [watchdog/0] root 13 2 0 17:45 ? 00:00:00 [cpuhp/0] root 14 2 0 17:45 ? 00:00:00 [cpuhp/1] root 15 2 0 17:45 ? 00:00:00 [watchdog/1] root 16 2 0 17:45 ? 00:00:00 [migration/1]
User:该进程属于哪个使用者帐号的
PID:进程编号
%CPU:占用CPU资源百分比
%MEM:占用内存百分比
VSZ:进程使用的虚拟内存
RSS:进程真正占用的物理内存空间
YYT:该进程在哪个终端运行
STAT:该进程目前的状态
START TIME:进程启动时间
[20:17:35 root@Centos8 ~]#ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 1.1 176180 10808 ? Ss 17:45 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 18 root 2 0.0 0.0 0 0 ? S 17:45 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 17:45 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 17:45 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< 17:45 0:00 [kworker/0:0H-kblockd] root 8 0.0 0.0 0 0 ? I< 17:45 0:00 [mm_percpu_wq] root 9 0.0 0.0 0 0 ? S 17:45 0:00 [ksoftirqd/0] root 10 0.0 0.0 0 0 ? I 17:45 0:00 [rcu_sched] root 11 0.0 0.0 0 0 ? S 17:45 0:00 [migration/0] root 12 0.0 0.0 0 0 ? S 17:45 0:00 [watchdog/0] root 13 0.0 0.0 0 0 ? S 17:45 0:00 [cpuhp/0] root 14 0.0 0.0 0 0 ? S 17:45 0:00 [cpuhp/1] root 15 0.0 0.0 0 0 ? S 17:45 0:00 [watchdog/1] root 16 0.0 0.0 0 0 ? S 17:45 0:00 [migration/1] root 17 0.0 0.0 0 0 ? S 17:45 0:00 [ksoftirqd/1] root 19 0.0 0.0 0 0 ? I< 17:45 0:00 [kworker/1:0H-kblockd]
显示父子进程关系
[20:22:49 root@Centos8 ~]#ps auxf USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2 0.0 0.0 0 0 ? S 17:45 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 17:45 0:00 \_ [rcu_gp] root 4 0.0 0.0 0 0 ? I< 17:45 0:00 \_ [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< 17:45 0:00 \_ [kworker/0:0H-kblockd] root 8 0.0 0.0 0 0 ? I< 17:45 0:00 \_ [mm_percpu_wq] root 9 0.0 0.0 0 0 ? S 17:45 0:00 \_ [ksoftirqd/0] root 10 0.0 0.0 0 0 ? I 17:45 0:00 \_ [rcu_sched] root 11 0.0 0.0 0 0 ? S 17:45 0:00 \_ [migration/0] root 12 0.0 0.0 0 0 ? S 17:45 0:00 \_ [watchdog/0] root 13 0.0 0.0 0 0 ? S 17:45 0:00 \_ [cpuhp/0] root 14 0.0 0.0 0 0 ? S 17:45 0:00 \_ [cpuhp/1] root 15 0.0 0.0 0 0 ? S 17:45 0:00 \_ [watchdog/1] root 16 0.0 0.0 0 0 ? S 17:45 0:00 \_ [migration/1] root 17 0.0 0.0 0 0 ? S 17:45 0:00 \_ [ksoftirqd/1] root 19 0.0 0.0 0 0 ? I< 17:45 0:00 \_ [kworker/1:0H-kblockd]
ps axo 加k选项后面加需要排序的项,可进行正序排序
选项前加-为倒序排序
pgrep命令
常用选项
示例:
[20:45:31 root@Centos8 ~]#pgrep -u gjz 2224 2247
显示进程名
[20:46:15 root@Centos8 ~]#pgrep -lu gjz 2224 bash 2247 ping
pidof命令
示例:
[20:48:37 root@Centos8 ~]#pidof ping 2259 [20:49:37 root@Centos8 ~]#pidof bash 2224 2199 1384
[20:50:27 root@Centos8 ~]#uptime 20:53:21 up 3:08, 2 users, [20:53:21 root@Centos8 ~]#w 20:53:40 up 3:08, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 17:47 3:56 0.10s 0.10s -bash root pts/1 10.0.0.1 20:45 0.00s 0.03s 0.00s w
当前服务器时间:20:53:21
当前服务器运行时长:3小时8分钟
当前用户:2个
当前系统平均负载:load average: 0.00, 0.00, 0.00
[20:53:40 root@Centos8 ~]#mpstat Linux 4.18.0-147.el8.x86_64 (Centos8) 05/10/2020 _x86_64_ (2 CPU) 09:06:26 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:06:26 PM all 0.04 0.00 0.09 0.10 0.06 0.05 0.00 0.00 0.00 99.66 [21:06:26 root@Centos8 ~]#mpstat 1 3 Linux 4.18.0-147.el8.x86_64 (Centos8) 05/10/2020 _x86_64_ (2 CPU) 09:06:33 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:06:34 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:06:35 PM all 0.00 0.00 0.00 0.00 0.50 0.00 0.00 0.00 0.00 99.50 09:06:36 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 Average: all 0.00 0.00 0.00 0.00 0.17 0.00 0.00 0.00 0.00 99.83
输出参数介绍
1 top - 21:44:58 up 3:59, 2 users, load average: 0.00, 0.00, 0.00 2 Tasks: 208 total, 1 running, 207 sleeping, 0 stopped, 0 zombie 3 %Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 4 MiB Mem : 957.1 total, 416.5 free, 244.7 used, 295.9 buff/cache 5 MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 553.3 avail Mem 6 7 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8 824 root 20 0 248820 14644 12800 S 0.3 1.5 0:09.48 vmtoolsd 9 2395 root 20 0 63976 4644 3764 R 0.3 0.5 0:00.35 top 10 1 root 20 0 176180 10812 8328 S 0.0 1.1 0:02.47 systemd 11 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 12 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 13 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 14 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd 15 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 16 9 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 17 10 root 20 0 0 0 0 I 0.0 0.0 0:01.41 rcu_sched 18 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 19 12 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/0 20 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 21 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 22 15 root rt 0 0 0 0 S 0.0 0.0 0:00.01 watchdog/1 23 16 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
free命令可以显示内存空间使用状态
常用选项
1 [21:48:24 root@Centos8 ~]#free -h 2 total used free shared buff/cache available 3 Mem: 957Mi 244Mi 417Mi 7.0Mi 295Mi 553Mi 4 Swap: 2.0Gi 0B 2.0Gi
1 [21:48:27 root@Centos8 ~]#iostat 2 Linux 4.18.0-147.el8.x86_64 (Centos8) 05/10/2020 _x86_64_ (2 CPU) 3 4 avg-cpu: %user %nice %system %iowait %steal %idle 5 0.03 0.00 0.19 0.09 0.00 99.69 6 7 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn 8 sdb 0.01 0.32 0.00 4940 0 9 sda 0.58 16.13 4.14 246498 63259 10 scd0 0.00 0.07 0.00 1040 0 11 dm-0 0.00 0.07 0.00 1044 0 12 13 [21:59:54 root@Centos8 ~]#iostat 1 3 14 Linux 4.18.0-147.el8.x86_64 (Centos8) 05/10/2020 _x86_64_ (2 CPU) 15 16 avg-cpu: %user %nice %system %iowait %steal %idle 17 0.03 0.00 0.19 0.09 0.00 99.69 18 19 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn 20 sdb 0.01 0.32 0.00 4940 0 21 sda 0.58 16.12 4.14 246506 63259 22 scd0 0.00 0.07 0.00 1040 0 23 dm-0 0.00 0.07 0.00 1044 0 24 25 avg-cpu: %user %nice %system %iowait %steal %idle 26 0.00 0.00 0.00 0.00 0.00 100.00 27 28 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn 29 sdb 0.00 0.00 0.00 0 0 30 sda 0.00 0.00 0.00 0 0 31 scd0 0.00 0.00 0.00 0 0 32 dm-0 0.00 0.00 0.00 0 0 33 34 avg-cpu: %user %nice %system %iowait %steal %idle 35 0.00 0.00 0.50 0.00 0.00 99.50 36 37 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn 38 sdb 0.00 0.00 0.00 0 0 39 sda 0.00 0.00 0.00 0 0 40 scd0 0.00 0.00 0.00 0 0 41 dm-0 0.00 0.00 0.00 0 0
命令选项:
示例:
查看某个端口被哪些进程占用
1 [22:08:44 root@Centos8 ~]#lsof -i :22 2 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 3 sshd 846 root 4u IPv4 29072 0t0 TCP *:ssh (LISTEN) 4 sshd 846 root 6u IPv6 29083 0t0 TCP *:ssh (LISTEN) 5 sshd 1371 root 5u IPv4 30393 0t0 TCP Centos8:ssh->10.0.0.1:50508 (ESTABLISHED) 6 sshd 1383 root 5u IPv4 30393 0t0 TCP Centos8:ssh->10.0.0.1:50508 (ESTABLISHED)
列出当前系统可用信号
1 [22:08:59 root@Centos8 ~]#kill -l 2 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 3 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 4 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 5 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 6 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 7 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 8 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 9 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 10 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 11 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 13 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 14 63) SIGRTMAX-1 64) SIGRTMAX 15 [22:24:29 root@Centos8 ~]#trap -l 16 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 17 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 18 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 19 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 20 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 21 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 22 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 23 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 24 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 25 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 26 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 27 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 28 63) SIGRTMAX-1 64) SIGRTMAX
杀死12345进程
kill 12345
强制杀死12345进程
kill -9 12345
执行任务需要先启动atd.service服务
1 [22:24:35 root@Centos8 ~]#systemctl status atd.service 2 ● atd.service - Job spooling tools 3 Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) 4 Active: active (running) since Sun 2020-05-10 17:45:31 CST; 4h 51min ago 5 Main PID: 934 (atd) 6 Tasks: 1 (limit: 5919) 7 Memory: 700.0K 8 CGroup: /system.slice/atd.service 9 └─934 /usr/sbin/atd -f 10 11 May 10 17:45:31 Centos8 systemd[1]: Started Job spooling tools.
在22:40执行echo $PATH任务
1 [22:38:32 root@Centos8 ~]#at 22:40 2 warning: commands will be executed using /bin/sh 3 at> echo $PATH 4 at> <EOT> 5 job 5 at Sun May 10 22:40:00 2020 6 [22:38:47 root@Centos8 ~]#at -l 7 5 Sun May 10 22:40:00 2020 a root
确保crond.service服务是启动状态
1 [22:38:52 root@Centos8 ~]#systemctl status crond.service 2 ● crond.service - Command Scheduler 3 Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled) 4 Active: active (running) since Sun 2020-05-10 17:45:31 CST; 4h 57min ago 5 Main PID: 930 (crond) 6 Tasks: 1 (limit: 5919) 7 Memory: 2.4M 8 CGroup: /system.slice/crond.service 9 └─930 /usr/sbin/crond -n 10 11 May 10 17:45:31 Centos8 systemd[1]: Started Command Scheduler. 12 May 10 17:45:31 Centos8 crond[930]: (CRON) STARTUP (1.5.2) 13 May 10 17:45:31 Centos8 crond[930]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 71% if used.) 14 May 10 17:45:31 Centos8 crond[930]: (CRON) INFO (running with inotify support) 15 May 10 18:01:01 Centos8 CROND[1444]: (root) CMD (run-parts /etc/cron.hourly) 16 May 10 19:01:01 Centos8 CROND[1585]: (root) CMD (run-parts /etc/cron.hourly) 17 May 10 20:01:01 Centos8 CROND[2083]: (root) CMD (run-parts /etc/cron.hourly) 18 May 10 21:01:01 Centos8 CROND[2296]: (root) CMD (run-parts /etc/cron.hourly) 19 May 10 22:01:01 Centos8 CROND[2448]: (root) CMD (run-parts /etc/cron.hourly) 20 You have new mail in /var/spool/mail/root
所需软件包
系统管理员制定cron任务 /etc/crontab
1 SHELL=/bin/bash 2 PATH=/sbin:/bin:/usr/sbin:/usr/bin 3 MAILTO=root 4 5 # For details see man 4 crontabs 6 7 # Example of job definition: 8 # .---------------- minute (0 - 59) 9 # | .------------- hour (0 - 23) 10 # | | .---------- day of month (1 - 31) 11 # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 12 # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 13 # | | | | | 14 # * * * * * user-name command to be executed
分钟 小时 日期 月份 星期 命令
用户计划任务
每个用户专用的cron任务文件/var/spool/cron/USERNAME
编辑crontab -e 文件制定任务
查看gjz用户的周期任务,及任务文件存放位置
原文:https://www.cnblogs.com/gaojinzhou/p/12864344.html