Linux 测试端口通不通

说到端口通不通,大部分人第一反应都是 ping。可惜ping命令是不能够测试端口的,只是测试网络联接状况以及信息包发送和接收状况。

我们需要用 telnet 命令。telnet 是 windows 标准服务,可以直接用;如果是 linux 机器,需要安装 telnet.

用法: telnet ip port

1)先用telnet连接不存在的端口

[root@localhost ~]# telnet 10.0.250.3 80
Trying 10.0.250.3...
telnet: connect to address 10.0.250.3: Connection refused #直接提示连接被拒绝

2)再连接存在的端口

[root@localhost ~]# telnet localhost 22
Trying ::1...
Connected to localhost. #看到Connected就连接成功了
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3
a
Protocol mismatch.
Connection closed by foreign host.

Mac 下停止 PostgreSQL 服务

在 Mac 下有很多种方式可以安装 PostgreSQL 。比如源码安装、homebrew 安装,dmg 包安装。 现在想起来,我应该用 homebrew 安装——还是命令行可控性强一些。当时觉得方便,使用官网提供的 dmg 包安装,然后问题就来了:无法停止 PostgreSQL。

参照网上的办法,使用了下面这个命令:

/Library/PostgreSQL/9.6/bin/pg_ctl -D /Library/PostgreSQL/9.6/bin/postgres stop -s -m fast

出现了这样的错误:

pg_ctl: could not open PID file "/Library/PostgreSQL/9.6/bin/postgres/postmaster.pid": Not a directory

无法找到 postmaster.pid 的位置。后来也找了一系列的办法,都不行。好在竟然在 github 上找到了 gui 界面停止的办法—— MaccaTech/PostgresPrefs

安装办法很简单,下载 GUI 后点击安装,会在系统偏好设置里生成管理图标,就可以在里边进行开启、停止的操作啦!

参考资料


php 数字位数不足前面加0补足

php 这一块和 c 语言简直一模一样:

<?php   
    $var=sprintf("%04d", 2);  //结果为0002     
?>

语法

sprintf(format,arg1,arg2,arg++)

参数 描述
format 必需。转换格式。
arg1 必需。规定插到 format 字符串中第一个 % 符号处的参数。
arg2 可选。规定插到 format 字符串中第二个 % 符号处的参数。
arg++ 可选。规定插到 format 字符串中第三、四等等 % 符号处的参数。

详解

参数 format 是转换的格式,以百分比符号 (“%”) 开始到转换字符结束。下面的可能的 format 值:

  • %% - 返回百分比符号
  • %b - 二进制数
  • %c - 依照 ASCII 值的字符
  • %d - 带符号十进制数
  • %e - 可续计数法(比如 1.5e+3)
  • %u - 无符号十进制数
  • %f - 浮点数(local settings aware)
  • %F - 浮点数(not local settings aware)
  • %o - 八进制数
  • %s - 字符串
  • %x - 十六进制数(小写字母)
  • %X - 十六进制数(大写字母)

arg1, arg2, ++ 等参数将插入到主字符串中的百分号 (%) 符号处。该函数是逐步执行的。在第一个 % 符号中,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

另外:百分号转小数,php 小数转换百分数:

$a = "20.544545%"; 
echo (float)$a/100; 

参考资料


Linux 下 PAM authentication failed 问题

出现这个问题时,基本上所有敏感操作都会请求输入密码,而且密码都是不对的。

很有可能是 Shell 的设置有问题。打开文件/etc/passwd查看 root 用户的 Shell 是不是正确的:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
...

注意 root 的 Shell 一定是/bin/bash。多半可能是中途某个地方将它改错了,改回来就好了。

改错的情况下还会出现很头疼的问题——无法登录。

附修改默认 Shell 命令

chsh -s /bin/zsh

Linux root不能 ssh 登陆的问题

有的发行版的 ssh 配置限制了,需要修改以下几个地方。

vim /etc/ssh/sshd_config

    #PermitRootLogin without-password    #注释这句话
    PermitRootLogin yes                  #改为yes  然后重启ssh
    
service ssh restart