zoukankan      html  css  js  c++  java
  • start-stop-daemon: matching on world-writable pidfile /var/run/redis/redis-server.pid is insecurefailed

    Microsoft Store上 看到最新的Ubuntu 20.04 LTS 已经适配到WSL上了, 于是卸载了老版本 18.04 LTS,安装上了最新版本的。

    第一次启动会比较慢,需耐心等待,接着是创建用户帐户和密码(Ref-1)

    Installing, this may take a few minutes...
    

    看了下WSL的官方文档,发现WSL对各种数据库的支持(Ref-2)还真是蛮全的。 更让我惊喜的是WSL和Window其实可以互操作(Ref-3): 既可以从 Windows 命令行运行 Linux 工具,也可以从 Linux 命令行运行 Windows 工具。以前一直以为WSL只是提供了 Linux 模拟环境,可以让使用 Windows 的开发人员敲敲 Linux 命令,哈哈,认识真的太浅薄了。这对于Redis尤其有用,再也不用安装万年不变的3.2.100(Ref-4)了(当然,你也可以在Docker中使用Redis)。

    启动运行Redis,解决启动问题

    安装好Redis以后,在WSL中运行Redis

    root@WSL:~# redis-server --version
    Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923
    
    root@WSL:~# sudo service redis-server start
    Starting redis-server: redis-server.
    
    root@WSL:~# redis-cli
    127.0.0.1:6379> set Redis "Hello Redis!"
    OK
    127.0.0.1:6379> get Redis
    "Hello Redis!"
    

    设置Redis在后台运行,并查看当前进程(有两个Redis实例在运行,注意后台实例的启动PID是1738,运行子PID是1739)

    root@WSL:~# redis-server --daemonize yes
    1738:C 16 Aug 2020 18:03:11.055 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    1738:C 16 Aug 2020 18:03:11.055 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1738, just started
    1738:C 16 Aug 2020 18:03:11.056 # Configuration loaded
    
    root@WSL:~# ps -aux --sort=tty,command
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0   8892   284 ?        Ssl  17:34   0:00 /init
    redis     1602  0.0  0.0  61300  3836 ?        Ssl  17:44   0:00 /usr/bin/redis-server 127.0.0.1:6379
    root      1739  0.0  0.0  55668  2828 ?        Ssl  18:03   0:00 redis-server *:6379
    kevin     1643  0.0  0.0  18076  3528 tty1     S    17:46   0:00 -bash
    root      1721  0.0  0.0  18080  3516 tty1     S    17:59   0:00 -bash
    root      1642  0.0  0.0   8900   204 tty1     Ss   17:46   0:00 /init
    root      1743  0.0  0.0  18880  1996 tty1     R    18:06   0:00 ps -aux --sort=tty,command
    root      1720  0.0  0.0  18908  2680 tty1     S    17:59   0:00 sudo -i
    

    把玩了一番,发现Redis无法启动,搜了以下,通过删除/var/run/redis/redis-server.pid 解决了问题

    root@WSL:~# sudo service redis-server start
    Starting redis-server: start-stop-daemon: matching on world-writable pidfile /var/run/redis/redis-server.pid is insecurefailed
    
    root@WSL:~# rm -f /var/run/redis/redis-server.pid
    
    root@WSL:~# sudo service redis-server start
    Starting redis-server: redis-server.
    
    root@WSL:~# sudo service redis-server status
     * redis-server is running
    

    通过CMDPowerShell运行 Redis

    CMD/PowerShell 通过wsl命令进入WSL环境, 这时 WSL 会自动挂载当前目录,也可以直接wsl redis-server(Ref-5)启动 Redis。Redis在standalone模式下,控制台无法进行交互。

    C:>wsl
    kevin@WSL:/mnt/c# redis-server
    2093:C 16 Aug 2020 18:44:15.097 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    2093:C 16 Aug 2020 18:44:15.097 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=2093, just started
    2093:C 16 Aug 2020 18:44:15.097 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
    2093:M 16 Aug 2020 18:44:15.098 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                    _._
               _.-``__ ''-._
          _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
      .-`` .-```.  ```/    _.,_ ''-._
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 2093
      `-._    `-._  `-./  _.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |           http://redis.io
      `-._    `-._`-.__.-'_.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |
      `-._    `-._`-.__.-'_.-'    _.-'
          `-._    `-.__.-'    _.-'
              `-._        _.-'
                  `-.__.-'
    
    2093:M 16 Aug 2020 18:44:15.109 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    2093:M 16 Aug 2020 18:44:15.110 # Server initialized
    2093:M 16 Aug 2020 18:44:15.111 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    2093:M 16 Aug 2020 18:44:15.113 * Ready to accept connections
    

    直接挂载C盘根目录可能导致CTRL+C无法退出, 在其他控制台,通过kill -9 PID可终止该Redis实例(2093)的运行(kill PID不起作用)。

    2093:signal-handler (1597575573) Received SIGINT scheduling shutdown...
    2093:M 16 Aug 2020 18:59:33.301 # User requested shutdown...
    2093:M 16 Aug 2020 18:59:33.302 * Saving the final RDB snapshot before exiting.
    2093:M 16 Aug 2020 18:59:33.303 # Failed opening the RDB file dump.rdb (in server root dir /mnt/c) for saving: Permission denied
    2093:M 16 Aug 2020 18:59:33.304 # Error trying to save the DB, can't exit.
    2093:M 16 Aug 2020 18:59:33.305 # SIGTERM received but errors trying to shut down the server, check the logs for more information
    

    还可以通过redis-server &使Redis在后台运行, 和直接redis-server运行不同,CTRL+C关闭以后,通过ps命令查看,发现PID(2329)仍在运行, 但是这种后台模式和守护模式(daemonize yes)的STAT(Ref-6) 是不同的。

    kevin@WSL:/$ redis-server &
    [1] 2329
    kevin@WSL:/$ 2329:C 16 Aug 2020 19:36:10.196 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    2329:C 16 Aug 2020 19:36:10.196 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=2329, just started
    2329:C 16 Aug 2020 19:36:10.196 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
    2329:M 16 Aug 2020 19:36:10.197 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                    _._
               _.-``__ ''-._
          _.-``    `.  `_.  ''-._           Redis 5.0.7 (00000000/0) 64 bit
      .-`` .-```.  ```/    _.,_ ''-._
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 2329
      `-._    `-._  `-./  _.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |           http://redis.io
      `-._    `-._`-.__.-'_.-'    _.-'
     |`-._`-._    `-.__.-'    _.-'_.-'|
     |    `-._`-._        _.-'_.-'    |
      `-._    `-._`-.__.-'_.-'    _.-'
          `-._    `-.__.-'    _.-'
              `-._        _.-'
                  `-.__.-'
    
    2329:M 16 Aug 2020 19:36:10.202 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    2329:M 16 Aug 2020 19:36:10.202 # Server initialized
    2329:M 16 Aug 2020 19:36:10.202 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    2329:M 16 Aug 2020 19:36:10.202 * Ready to accept connections
    ^C
    kevin@WSL:/$ ps -aux --sort=tty,command
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.0   8892   264 ?        Ssl  17:34   0:00 /init
    redis     1602  0.0  0.0  61300  3836 ?        Ssl  17:44   0:00 /usr/bin/redis-server 127.0.0.1:6379
    root      1739  0.0  0.0  55668  2828 ?        Ssl  18:03   0:00 redis-server *:6379
    kevin     1643  0.0  0.0  18076  3084 tty1     S    17:46   0:00 -bash
    root      1721  0.0  0.0  18212  3432 tty1     S    17:59   0:00 -bash
    root      1642  0.0  0.0   8900   176 tty1     Ss   17:46   0:00 /init
    root      1720  0.0  0.0  18908  2140 tty1     S    17:59   0:00 sudo -i
    kevin     2178  0.0  0.0  18208  3684 tty2     S    19:12   0:00 -bash
    root      2177  0.0  0.0   8900   200 tty2     Ss   19:12   0:00 /init
    kevin     2333  0.0  0.0  18880  2000 tty2     R    19:36   0:00 ps -aux --sort=tty,command
    kevin     2329  0.1  0.0  55668  4080 tty2     Sl   19:36   0:00 redis-server
    
  • 相关阅读:
    C#后台调用前台javascript的五种方法小结
    分页存储过程(一):分页获得单个表的数据 (未验证)
    第一章 单一职责原则 --(抄书)
    虚拟机--第二章java内存区域与内存溢出异常--(抄书)
    虚拟机--第一章走进java--(抄书)
    log4j的配置
    mybatis主配置文件详解
    js判断checkbox是否选中 .checked不管用
    简单的字幕添加方法
    Maven项目管理工具--简单实用与入门
  • 原文地址:https://www.cnblogs.com/makesense/p/13513756.html
Copyright © 2011-2022 走看看