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

PostgreSQL 三种关库模式

PostgreSQL 三种关库模式

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

PostgreSQL 提供了三种关库模式,分别是 Smart ShutdownFast ShutdownImmediate Shutdown。以下是每种模式的详细说明:

  1. Smart Shutdown
    • 这种模式下,数据库会等待所有活跃的客户端连接断开后才会停止。
    • 如果用户一直不断开连接,服务器将无法停止。
    • 使用 pg_ctl 命令的示例如下:
      pg_ctl stop -m smart
      

输出日志

2024-11-27 06:01:14.149 PST [127700] DEBUG:  postmaster received shutdown request signal
2024-11-27 06:01:14.149 PST [127700] LOG:  received smart shutdown request
2024-11-27 06:01:14.150 PST [127700] DEBUG:  sending signal 15 to process 127708
2024-11-27 06:01:14.150 PST [127708] DEBUG:  logical replication launcher shutting down
2024-11-27 06:01:14.150 PST [127706] DEBUG:  autovacuum launcher shutting down
2024-11-27 06:01:14.150 PST [127708] DEBUG:  shmem_exit(1): 5 before_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127706] DEBUG:  shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG:  shmem_exit(1): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG:  proc_exit(1): 1 callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG:  exit(1)
2024-11-27 06:01:14.150 PST [127708] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.150 PST [127708] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.150 PST [127705] DEBUG:  shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG:  shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG:  exit(0)
2024-11-27 06:01:14.151 PST [127705] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127705] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG:  exit(0)
2024-11-27 06:01:14.151 PST [127706] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127706] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.151 PST [127700] DEBUG:  reaping dead processes
2024-11-27 06:01:14.151 PST [127700] LOG:  background worker "logical replication launcher" (PID 127708) exited with exit code 1
2024-11-27 06:01:14.151 PST [127703] DEBUG:  shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG:  shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG:  exit(0)
2024-11-27 06:01:14.151 PST [127703] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.151 PST [127703] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.151 PST [127700] DEBUG:  reaping dead processes
2024-11-27 06:01:14.152 PST [127700] DEBUG:  reaping dead processes
2024-11-27 06:01:14.152 PST [127702] LOG:  shutting down
2024-11-27 06:01:14.178 PST [127707] DEBUG:  executing archive command "test ! -f /home/pg16/archivelog/00000001000000040000002F && cp pg_wal/00000001000000040000002F /home/pg16/archivelog/00000001000000040000002F"
2024-11-27 06:01:14.178 PST [127702] LOG:  checkpoint starting: shutdown immediate
2024-11-27 06:01:14.178 PST [127702] DEBUG:  performing replication slot checkpoint
2024-11-27 06:01:14.181 PST [127702] DEBUG:  attempting to remove WAL segments older than log file 00000000000000040000002F
2024-11-27 06:01:14.182 PST [127702] DEBUG:  SlruScanDirectory invoking callback on pg_subtrans/005C
2024-11-27 06:01:14.182 PST [127702] LOG:  checkpoint complete: wrote 0 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.004 s; sync files=0, longest=0.000 s, average=0.000 s; distance=16383 kB, estimate=16383 kB; lsn=4/30000028, redo lsn=4/30000028
2024-11-27 06:01:14.182 PST [127702] DEBUG:  shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG:  writing stats file "pg_stat/pgstat.stat"
2024-11-27 06:01:14.182 PST [127702] DEBUG:  shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG:  exit(0)
2024-11-27 06:01:14.182 PST [127702] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.182 PST [127702] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.183 PST [127700] DEBUG:  reaping dead processes
2024-11-27 06:01:14.196 PST [127707] DEBUG:  archived write-ahead log file "00000001000000040000002F"
2024-11-27 06:01:14.197 PST [127707] DEBUG:  shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG:  archiver process shutting down
2024-11-27 06:01:14.197 PST [127707] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG:  exit(0)
2024-11-27 06:01:14.197 PST [127707] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.197 PST [127707] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.202 PST [127700] DEBUG:  reaping dead processes
2024-11-27 06:01:14.202 PST [127700] DEBUG:  shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.202 PST [127700] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:01:14.205 PST [127700] DEBUG:  cleaning up orphaned dynamic shared memory with ID 210471318
2024-11-27 06:01:14.205 PST [127700] DEBUG:  cleaning up dynamic shared memory control segment with ID 4077101978
2024-11-27 06:01:14.205 PST [127700] DEBUG:  proc_exit(0): 2 callbacks to make
2024-11-27 06:01:14.206 PST [127700] LOG:  database system is shut down
2024-11-27 06:01:14.206 PST [127700] DEBUG:  exit(0)
2024-11-27 06:01:14.206 PST [127700] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.206 PST [127700] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.206 PST [127700] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG:  logger shutting down
2024-11-27 06:01:14.207 PST [127701] DEBUG:  shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG:  shmem_exit(0): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG:  proc_exit(0): 0 callbacks to make
2024-11-27 06:01:14.207 PST [127701] DEBUG:  exit(0)
2024-11-27 06:01:14.207 PST [127701] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:01:14.208 PST [127701] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:01:14.208 PST [127701] DEBUG:  proc_exit(-1): 0 callbacks to make
  1. Fast Shutdown(默认方式)
    • 快速关闭模式,不再允许新的连接。
    • 向所有活跃的服务进程发送 SIGTERM 信号,让它们立即退出,然后等待所有子进程退出并关闭数据库。
    • 如果服务处于在线备份状态,将直接终止备份,这将导致此次备份失败。
    • 使用 pg_ctl 命令的示例如下:
      pg_ctl stop -m fast
      

输出日志

2024-11-27 06:02:17.051 PST [127815] DEBUG:  postmaster received shutdown request signal
2024-11-27 06:02:17.051 PST [127815] LOG:  received fast shutdown request
2024-11-27 06:02:17.052 PST [127815] LOG:  aborting any active transactions
2024-11-27 06:02:17.052 PST [127815] DEBUG:  sending signal 15 to process 127823
2024-11-27 06:02:17.052 PST [127818] DEBUG:  shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  autovacuum launcher shutting down
2024-11-27 06:02:17.052 PST [127818] DEBUG:  shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG:  exit(0)
2024-11-27 06:02:17.052 PST [127818] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127818] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  exit(0)
2024-11-27 06:02:17.052 PST [127821] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.052 PST [127821] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG:  logical replication launcher shutting down
2024-11-27 06:02:17.053 PST [127823] DEBUG:  shmem_exit(1): 5 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG:  shmem_exit(1): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG:  proc_exit(1): 1 callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG:  exit(1)
2024-11-27 06:02:17.053 PST [127823] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127823] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG:  shmem_exit(0): 4 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127815] DEBUG:  reaping dead processes
2024-11-27 06:02:17.053 PST [127820] DEBUG:  shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG:  exit(0)
2024-11-27 06:02:17.053 PST [127820] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.053 PST [127820] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.053 PST [127815] DEBUG:  reaping dead processes
2024-11-27 06:02:17.053 PST [127815] LOG:  background worker "logical replication launcher" (PID 127823) exited with exit code 1
2024-11-27 06:02:17.053 PST [127815] DEBUG:  reaping dead processes
2024-11-27 06:02:17.053 PST [127817] LOG:  shutting down
2024-11-27 06:02:17.086 PST [127822] DEBUG:  executing archive command "test ! -f /home/pg16/archivelog/000000010000000400000030 && cp pg_wal/000000010000000400000030 /home/pg16/archivelog/000000010000000400000030"
2024-11-27 06:02:17.086 PST [127817] LOG:  checkpoint starting: shutdown immediate
2024-11-27 06:02:17.087 PST [127817] DEBUG:  performing replication slot checkpoint
2024-11-27 06:02:17.089 PST [127817] DEBUG:  checkpoint sync: number=1 file=pg_xact/0005 time=0.618 ms
2024-11-27 06:02:17.090 PST [127817] DEBUG:  checkpoint sync: number=2 file=pg_multixact/offsets/0000 time=0.175 ms
2024-11-27 06:02:17.090 PST [127817] DEBUG:  attempting to remove WAL segments older than log file 000000000000000400000030
2024-11-27 06:02:17.090 PST [127817] DEBUG:  removing write-ahead log file "00000001000000040000002F"
2024-11-27 06:02:17.093 PST [127817] DEBUG:  SlruScanDirectory invoking callback on pg_subtrans/005C
2024-11-27 06:02:17.093 PST [127817] LOG:  checkpoint complete: wrote 3 buffers (0.0%); 0 WAL file(s) added, 1 removed, 0 recycled; write=0.001 s, sync=0.001 s, total=0.008 s; sync files=2, longest=0.001 s, average=0.001 s; distance=16384 kB, estimate=16384 kB; lsn=4/31000028, redo lsn=4/31000028
2024-11-27 06:02:17.093 PST [127817] DEBUG:  shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:02:17.093 PST [127817] DEBUG:  writing stats file "pg_stat/pgstat.stat"
2024-11-27 06:02:17.093 PST [127817] DEBUG:  shmem_exit(0): 5 on_shmem_exit callbacks to make
2024-11-27 06:02:17.093 PST [127817] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.093 PST [127817] DEBUG:  exit(0)
2024-11-27 06:02:17.094 PST [127817] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.094 PST [127817] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.094 PST [127817] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.095 PST [127815] DEBUG:  reaping dead processes
2024-11-27 06:02:17.102 PST [127822] DEBUG:  archived write-ahead log file "000000010000000400000030"
2024-11-27 06:02:17.102 PST [127822] DEBUG:  shmem_exit(0): 5 before_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG:  archiver process shutting down
2024-11-27 06:02:17.102 PST [127822] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG:  proc_exit(0): 1 callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG:  exit(0)
2024-11-27 06:02:17.102 PST [127822] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.102 PST [127822] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.102 PST [127815] DEBUG:  reaping dead processes
2024-11-27 06:02:17.102 PST [127815] DEBUG:  shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.103 PST [127815] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 06:02:17.105 PST [127815] DEBUG:  cleaning up orphaned dynamic shared memory with ID 2186499264
2024-11-27 06:02:17.106 PST [127815] DEBUG:  cleaning up dynamic shared memory control segment with ID 3559701182
2024-11-27 06:02:17.106 PST [127815] DEBUG:  proc_exit(0): 2 callbacks to make
2024-11-27 06:02:17.106 PST [127815] LOG:  database system is shut down
2024-11-27 06:02:17.106 PST [127815] DEBUG:  exit(0)
2024-11-27 06:02:17.106 PST [127815] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.106 PST [127815] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.106 PST [127815] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 06:02:17.106 PST [127816] DEBUG:  logger shutting down
2024-11-27 06:02:17.107 PST [127816] DEBUG:  shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG:  shmem_exit(0): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG:  proc_exit(0): 0 callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG:  exit(0)
2024-11-27 06:02:17.107 PST [127816] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 06:02:17.107 PST [127816] DEBUG:  proc_exit(-1): 0 callbacks to make
  1. Immediate Shutdown
    • 立即关闭模式,主进程 postgres 向所有子进程发送 SIGQUIT 信号,并且立即退出,所有的子进程也会立即退出。
    • 采用这种模式退出时,并不会妥善地关闭数据库系统,下次启动时数据库会重放 WAL 日志进行恢复,因此建议只在紧急的时候使用该方法。
    • 使用 pg_ctl 命令的示例如下:
      pg_ctl stop -m immediate
      

输出日志

2024-11-27 05:58:21.525 PST [127387] DEBUG:  postmaster received shutdown request signal
2024-11-27 05:58:21.525 PST [127387] LOG:  received immediate shutdown request
2024-11-27 05:58:21.526 PST [127387] DEBUG:  sending signal 3 to process 127395
2024-11-27 05:58:21.526 PST [127387] DEBUG:  reaping dead processes
2024-11-27 05:58:21.526 PST [127387] DEBUG:  reaping dead processes
2024-11-27 05:58:21.527 PST [127387] DEBUG:  reaping dead processes
2024-11-27 05:58:21.527 PST [127387] DEBUG:  shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.527 PST [127387] DEBUG:  shmem_exit(0): 6 on_shmem_exit callbacks to make
2024-11-27 05:58:21.531 PST [127387] DEBUG:  cleaning up orphaned dynamic shared memory with ID 2800411074
2024-11-27 05:58:21.531 PST [127387] DEBUG:  cleaning up dynamic shared memory control segment with ID 3983505204
2024-11-27 05:58:21.532 PST [127387] DEBUG:  proc_exit(0): 2 callbacks to make
2024-11-27 05:58:21.532 PST [127387] LOG:  database system is shut down
2024-11-27 05:58:21.532 PST [127387] DEBUG:  exit(0)
2024-11-27 05:58:21.532 PST [127387] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127387] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127387] DEBUG:  proc_exit(-1): 0 callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG:  logger shutting down
2024-11-27 05:58:21.532 PST [127388] DEBUG:  shmem_exit(0): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG:  shmem_exit(0): 0 on_shmem_exit callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG:  proc_exit(0): 0 callbacks to make
2024-11-27 05:58:21.532 PST [127388] DEBUG:  exit(0)
2024-11-27 05:58:21.533 PST [127388] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2024-11-27 05:58:21.533 PST [127388] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2024-11-27 05:58:21.533 PST [127388] DEBUG:  proc_exit(-1): 0 callbacks to make

这些模式分别对应不同的信号:

  • SIGTERM 对应 Smart Shutdown
  • SIGINT 对应 Fast Shutdown
  • SIGQUIT 对应 Immediate Shutdown

SIGINT 信号

[pg16@test ~]$ ps -ef |grep postgre
pg16      38940      1  0 05:32 ?        00:00:00 /home/pg16/soft/bin/postgres
pg16      38941  38940  0 05:32 ?        00:00:00 postgres: logger 
pg16      38942  38940  0 05:32 ?        00:00:00 postgres: checkpointer 
pg16      38943  38940  0 05:32 ?        00:00:00 postgres: background writer 
pg16      38945  38940  0 05:32 ?        00:00:00 postgres: walwriter 
pg16      38946  38940  0 05:32 ?        00:00:00 postgres: autovacuum launcher
pg16      38947  38940  0 05:32 ?        00:00:00 postgres: archiver 
pg16      38948  38940  0 05:32 ?        00:00:00 postgres: logical replication launcher
pg16      38954  38549  0 05:32 pts/2    00:00:00 grep --color=auto postgre
[pg16@test ~]$ pg_ctl stop -m fast[root@test ~]# gdb -p 38940
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Attaching to process 38940
Reading symbols from /home/pg16/soft/bin/postgres...(no debugging symbols found)...done.
Reading symbols from /lib64/libz.so.1...Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libicui18n.so.50...Reading symbols from /lib64/libicui18n.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicui18n.so.50
Reading symbols from /lib64/libicuuc.so.50...Reading symbols from /lib64/libicuuc.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicuuc.so.50
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libstdc++.so.6
Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libicudata.so.50...Reading symbols from /lib64/libicudata.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicudata.so.50
Reading symbols from /home/pg16/soft/lib/postgresql/pg_stat_statements.so...(no debugging symbols found)...done.
Loaded symbols for /home/pg16/soft/lib/postgresql/pg_stat_statements.so
0x00007f7f25563f23 in __epoll_wait_nocancel () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-317.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 libicu-50.2-4.el7_7.x86_64 libstdc++-4.8.5-44.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) c handle_sigterm
Not stopped at any breakpoint; argument ignored.
Continuing.
cProgram received signal SIGINT, Interrupt.
0x00007f7f25563f23 in __epoll_wait_nocancel () from /lib64/libc.so.6
(gdb) c
Continuing.
c

SIGTERM 信号

[pg16@test ~]$ ps -ef |grep postgre    
pg16      38824      1  0 05:30 ?        00:00:00 /home/pg16/soft/bin/postgres
pg16      38825  38824  0 05:30 ?        00:00:00 postgres: logger 
pg16      38826  38824  0 05:30 ?        00:00:00 postgres: checkpointer 
pg16      38827  38824  0 05:30 ?        00:00:00 postgres: background writer 
pg16      38829  38824  0 05:30 ?        00:00:00 postgres: walwriter 
pg16      38830  38824  0 05:30 ?        00:00:00 postgres: autovacuum launcher
pg16      38831  38824  0 05:30 ?        00:00:00 postgres: archiver 
pg16      38832  38824  0 05:30 ?        00:00:00 postgres: logical replication launcher
pg16      38837  38549  0 05:30 pts/2    00:00:00 grep --color=auto postgre
[pg16@test ~]$ pg_ctl stop -m smart[root@test ~]# gdb -p 38824
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Attaching to process 38824
Reading symbols from /home/pg16/soft/bin/postgres...(no debugging symbols found)...done.
Reading symbols from /lib64/libz.so.1...Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libicui18n.so.50...Reading symbols from /lib64/libicui18n.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicui18n.so.50
Reading symbols from /lib64/libicuuc.so.50...Reading symbols from /lib64/libicuuc.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicuuc.so.50
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libstdc++.so.6
Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libicudata.so.50...Reading symbols from /lib64/libicudata.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicudata.so.50
Reading symbols from /home/pg16/soft/lib/postgresql/pg_stat_statements.so...(no debugging symbols found)...done.
Loaded symbols for /home/pg16/soft/lib/postgresql/pg_stat_statements.so
0x00007fa33364bf23 in __epoll_wait_nocancel () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-317.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 libicu-50.2-4.el7_7.x86_64 libstdc++-4.8.5-44.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) c handle_sigterm
Not stopped at any breakpoint; argument ignored.
Continuing.
cProgram received signal SIGTERM, Terminated.
0x00007fa33364bf23 in __epoll_wait_nocancel () from /lib64/libc.so.6
(gdb) c
Continuing.
[Inferior 1 (process 38824) exited normally]

SIGQUIT信号

[pg16@test ~]$ ps -ef |grep postgre
pg16      38603      1  0 05:28 ?        00:00:00 /home/pg16/soft/bin/postgres
pg16      38604  38603  0 05:28 ?        00:00:00 postgres: logger 
pg16      38605  38603  0 05:28 ?        00:00:00 postgres: checkpointer 
pg16      38606  38603  0 05:28 ?        00:00:00 postgres: background writer 
pg16      38608  38603  0 05:28 ?        00:00:00 postgres: walwriter 
pg16      38609  38603  0 05:28 ?        00:00:00 postgres: autovacuum launcher
pg16      38610  38603  0 05:28 ?        00:00:00 postgres: archiver 
pg16      38611  38603  0 05:28 ?        00:00:00 postgres: logical replication launcher
pg16      38670  38549  0 05:28 pts/2    00:00:00 grep --color=auto postgre
[pg16@test ~]$ pg_ctl stop -m immediate[root@test ~]# gdb -p 38603
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Attaching to process 38603
Reading symbols from /home/pg16/soft/bin/postgres...(no debugging symbols found)...done.
Reading symbols from /lib64/libz.so.1...Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libicui18n.so.50...Reading symbols from /lib64/libicui18n.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicui18n.so.50
Reading symbols from /lib64/libicuuc.so.50...Reading symbols from /lib64/libicuuc.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicuuc.so.50
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libstdc++.so.6
Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libicudata.so.50...Reading symbols from /lib64/libicudata.so.50...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libicudata.so.50
Reading symbols from /home/pg16/soft/lib/postgresql/pg_stat_statements.so...(no debugging symbols found)...done.
Loaded symbols for /home/pg16/soft/lib/postgresql/pg_stat_statements.so
0x00007fac7f847f23 in __epoll_wait_nocancel () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-317.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 libicu-50.2-4.el7_7.x86_64 libstdc++-4.8.5-44.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) c handle_sigterm
Not stopped at any breakpoint; argument ignored.
Continuing.
cProgram received signal SIGQUIT, Quit.
0x00007fac7f847f23 in __epoll_wait_nocancel () from /lib64/libc.so.6
(gdb) c
Continuing.
[Inferior 1 (process 38603) exited normally]

通过这些不同的关机模式,可以根据具体需求选择合适的关机方式。

相关文章:

PostgreSQL 三种关库模式

PostgreSQL 三种关库模式 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777PostgreSQL 提供了三种关库模式&…...

《运放秘籍》第二部:仪表放大器专项知识点总结

一、差分放大器与仪表放大器的讨论 1.1. 仪放的前世今生——差分放大器原理&#xff1f; 1.2. 差分放大的原理 1.3. 差分放大器检测电流 1.4. 差分放大器端一&#xff1a;输入阻抗 1.5. 差分放大器端二&#xff1a;共模抑制比 1.6. 为什么关注输入阻抗&#xff1f;共模抑…...

C++STL之vector(超详细)

CSTL之vector 1.vector基本介绍2.vector重要接口2.1.构造函数2.2.迭代器2.3.空间2.3.1.resize2.3.2.capacity 2.4.增删查找 3.迭代器失效4.迭代器分类 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f68…...

ubuntu环境下安装electron环境,并快速打包

1.配置镜像源 关闭防火墙&#xff0c;命令&#xff1a;sudo ufw disable 1.1配置国内镜像源&#xff1a; vim /etc/apt/source.list deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ jammy main…...

【Pytorch】优化器(Optimizer)模块‘torch.optim’

torch.optim 是 PyTorch 中提供的优化器&#xff08;Optimizer&#xff09;模块&#xff0c;用于优化神经网络模型的参数&#xff0c;更新网络权重&#xff0c;使得模型在训练过程中最小化损失函数。它提供了多种常见的优化算法&#xff0c;如 梯度下降法&#xff08;SGD&#…...

API平台建设之路:从0到1的实践指南

在这个互联网蓬勃发展的时代&#xff0c;API已经成为连接各个系统、服务和应用的重要纽带。搭建一个优质的API平台不仅能为开发者提供便利&#xff0c;更能创造可观的商业价值。让我们一起探讨如何打造一个成功的API平台。 技术架构是API平台的根基。选择合适的技术栈对平台的…...

【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 文章目录 DataStream API编程模型前言1.触发器1.1 代码示例 2.驱逐器2.1 代码示例 总结 前言 本小节我想…...

信号灯集以及 P V 操作

一、信号灯集 1.1 信号灯集的概念 信号灯集是进程间同步的一种方式。 信号灯集创建后&#xff0c;在信号灯集内部会有很多个信号灯。 每个信号灯都可以理解为是一个信号量。 信号灯的编号是从0开始的。 比如A进程监视0号灯&#xff0c;B进程监视1号灯。 0号灯有资源&…...

在 Flutter app 中,通过视频 URL 下载视频到手机相册

在 Flutter app 中&#xff0c;通过视频 URL 下载视频到手机相册可以通过以下步骤实现&#xff1a; 1. 添加依赖 使用 dio 下载文件&#xff0c;结合 path_provider 获取临时存储路径&#xff0c;以及 gallery_saver 将文件保存到相册。 在 pubspec.yaml 中添加以下依赖&…...

Nature Methods | 人工智能在生物与医学研究中的应用

Nature Methods | 人工智能在生物与医学研究中的应用 生物研究中的深度学习 随着人工智能&#xff08;AI&#xff09;技术的迅速发展&#xff0c;尤其是深度学习和大规模预训练模型的出现&#xff0c;AI在生物学研究中的应用正在经历一场革命。从基因组学、单细胞组学到癌症生…...

Axure PR 9 随机函数 设计交互

​大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们将深入探讨Axure中随机函数的用法。 随机函数 创建随机函数所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.在元件库中拖出一个矩形元件。 3.选中矩形元件&#xff0c;样式窗格中&#xff0c;将…...

【人工智能基础05】决策树模型

文章目录 一. 基础内容1. 决策树基本原理1.1. 定义1.2. 表示成条件概率 2. 决策树的训练算法2.1. 划分选择的算法信息增益&#xff08;ID3 算法&#xff09;信息增益比&#xff08;C4.5 算法&#xff09;基尼指数&#xff08;CART 算法&#xff09;举例说明&#xff1a;计算各个…...

【人工智能基础03】机器学习(练习题)

文章目录 课本习题监督学习的例子过拟合和欠拟合常见损失函数&#xff0c;判断一个损失函数的好坏无监督分类&#xff1a;kmeans无监督分类&#xff0c;Kmeans 三分类问题变换距离函数选择不同的起始点 重点回顾1. 监督学习、半监督学习和无监督学习的定义2. 判断学习场景3. 监…...

HarmonyOS(60)性能优化之状态管理最佳实践

状态管理最佳实践 1、避免在循环中访问状态变量1.1 反例1.2 正例 2、避免不必要的状态变量的使用3、建议使用临时变量替换状态变量3.1 反例3.2 正例 4、参考资料 1、避免在循环中访问状态变量 在应用开发中&#xff0c;应避免在循环逻辑中频繁读取状态变量&#xff0c;而是应该…...

数据库课程设计报告 超市会员管理系统

一、系统简介 1.1设计背景 受到科学技术的推动&#xff0c;全球计算机的软硬件技术迅速发展&#xff0c;以计算机为基础支撑的信息化如今已成为现代企业的一个重要标志与衡量企业综合实力的重要标准&#xff0c;并且正在悄无声息的影响与改变着国内外广泛的中小型企业的运营模…...

C++算法练习-day54——39.组合总和

题目来源&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目思路分析 题目&#xff1a;给定一个整数数组 candidates 和一个目标数 target&#xff0c;找出所有独特的组合&#xff0c;这些组合中的数字之和等于 target。每个数字在每个组合中只能使用一次。 思路&a…...

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Linux的文件系统

这里写目录标题 一.文件系统的基本组成索引节点目录项文件数据的存储扇区三个存储区域 二.虚拟文件系统文件系统分类进程文件表读写过程 三.文件的存储连续空间存放方式缺点 非连续空间存放方式链表方式隐式链表缺点显示链接 索引数据库缺陷索引的方式优点&#xff1a;多级索引…...

【Vue3】从零开始创建一个VUE项目

【Vue3】从零开始创建一个VUE项目 手动创建VUE项目附录 package.json文件报错处理: Failed to get response from https://registry.npmjs.org/vue-cli-version-marker 相关链接&#xff1a; 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&…...

9)语法分析:半倒装和全倒装

在英语中&#xff0c;倒装是一种特殊的句子结构&#xff0c;其中主语和谓语&#xff08;或助动词&#xff09;的位置被颠倒。倒装分为部分倒装和全倒装两种类型&#xff0c;它们的主要区别在于倒装的程度和使用的场合。 1. 部分倒装 (Partial Inversion) 部分倒装是指将助动词…...

告别C盘搬家!用mklink命令把任意文件夹塞进OneDrive同步(Windows 10/11保姆级教程)

彻底解放存储空间&#xff1a;用mklink实现OneDrive全盘同步的终极指南 你是否遇到过这样的困扰&#xff1a;C盘空间频频告急&#xff0c;而OneDrive却只能同步那几个默认文件夹&#xff1f;重要的工作文档散落在D盘、E盘甚至移动硬盘里&#xff0c;每次手动备份都让人抓狂。今…...

【Docker沙箱安全实战指南】:20年运维专家亲授5大隔离陷阱与零信任配置法

第一章&#xff1a;Docker沙箱安全的核心原理与认知革命Docker沙箱并非传统意义上的“隔离牢笼”&#xff0c;而是一组由Linux内核原语协同构建的轻量级边界控制机制。其安全性不依赖单一技术&#xff0c;而是源于命名空间&#xff08;Namespaces&#xff09;、控制组&#xff…...

计算机毕业设计:Python股票数据挖掘与LSTM股价预测平台 Flask框架 LSTM Keras 数据分析 可视化 深度学习 大数据 爬虫(建议收藏)✅

1、项目介绍 技术栈 采用 Python 语言开发&#xff0c;基于 Flask 框架搭建后端服务&#xff0c;通过 requests 爬虫从雪球网采集股票数据&#xff0c;运用 LSTM 预测算法结合 Keras 深度学习神经网络进行股价预测&#xff0c;前端使用 Echarts 实现数据可视化&#xff0c;并结…...

AI搜索优化(GEO/AEO)技术效果服务商排名对比列表

AI搜索优化&#xff08;GEO/AEO&#xff09;技术效果服务商排名对比列表 一、全栈技术头部 拓世网络 核心技术&#xff1a;TSPR-4 生成式引擎&#xff08;TWLH四元结构&#xff09;&#xff0c;主打概率化递推算法与DIVJSON-LD双层结构化。 优势&#xff1a;逻辑自洽、可…...

从梯形图到SCL:我的PLC栈功能重构笔记(附完整TIA Portal V17项目文件)

从梯形图到SCL&#xff1a;我的PLC栈功能重构笔记 第一次在TIA Portal V17中看到自己用SCL重写的栈功能模块时&#xff0c;那种感觉就像是从手工作坊走进了现代化工厂。作为在工业自动化领域摸爬滚打八年的工程师&#xff0c;我深知梯形图&#xff08;LAD&#xff09;就像老朋友…...

暗黑破坏神2存档编辑器:5分钟快速上手终极指南

暗黑破坏神2存档编辑器&#xff1a;5分钟快速上手终极指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款功能强大的暗黑破坏神2存档编辑器&#xff0c;专为D2和D2R玩家设计。这款基于Web的开源工具让你能够轻…...

Mac效率提升:一键neofetch查系统信息,再也不用点‘关于本机’了(含.zshrc配置详解)

Mac效率革命&#xff1a;用neofetch打造终极系统信息仪表盘 每次需要查看Mac的硬件配置或系统版本时&#xff0c;你是不是还在点击左上角苹果图标→"关于本机"&#xff1f;作为一名整天与终端打交道的开发者&#xff0c;我发现了一个能节省大量时间的秘密武器——neo…...

DIY无人机必备:用GY-MPU9250实现姿态控制的5个关键步骤

DIY无人机姿态控制实战&#xff1a;基于GY-MPU9250的5个关键步骤 1. 传感器基础与硬件连接 GY-MPU9250作为一款9轴运动跟踪传感器&#xff0c;集成了三轴加速度计、三轴陀螺仪和三轴磁力计&#xff0c;是无人机姿态控制系统的核心组件。这款传感器采用QFN封装&#xff0c;支持I…...

深度学习框架使用 YOLOv8 进行训练无人机视角的可见光-红外火点和烟雾检测数据集红外可见光配对 双模态输入(多模态)无人机红外可见光火灾烟雾数据集的训练评估及推理

使用 YOLOv8 进行训练无人机视角的可见光-红外配对火点和烟雾检测数据集 双模态输入&#xff08;多模态&#xff09;无人机红外可见光火灾烟雾数据集的训练评估及推理 以下文字及代码可供参考。仅供参考。 文章目录**1. 环境搭建****2. 数据准备****2.1 数据格式转换&#xff0…...

告别内核打印!用devmem2在嵌入式Linux上直接读写寄存器(附交叉编译踩坑实录)

嵌入式Linux寄存器调试利器&#xff1a;devmem2实战指南与交叉编译全解析 调试嵌入式系统时&#xff0c;最令人头疼的莫过于反复修改内核驱动、重新编译、烧录镜像的漫长循环。想象一下这样的场景&#xff1a;你正在调试一块全新的ARM开发板&#xff0c;GPIO死活不工作&#x…...