Can’t start server: can’t create PID file: No space left on device

linux下MySQL报错:Can’t start server: can’t create PID file: No space left on device
今天帮一个朋友检查服务器,MySQL无法启动,报错的日志

  1. Number of processes running now: 0
  2. 110413 09:30:46  mysqld restarted
  3. 110413  9:30:46 [Warning] Asked for 196608 thread stack, but got 126976
  4. InnoDB: The log sequence number in ibdata files does not match
  5. InnoDB: the log sequence number in the ib_logfiles!
  6. 110413  9:30:46  InnoDB: Database was not shut down normally!
  7. InnoDB: Starting crash recovery.
  8. InnoDB: Reading tablespace information from the .ibd files...
  9. InnoDB: Restoring possible half-written data pages from the doublewrite
  10. InnoDB: buffer...
  11. 110413  9:30:46  InnoDB: Started; log sequence number 0 81298
  12. 110413  9:30:46 [ERROR] /usr/sbin/mysqld: Error writing file '/var/lib/mysql/u01.enimg.com.pid' (Errcode: 28)
  13. 110413  9:30:46 [ERROR] Can't start server: can't create PID file: No space left on device

原因是其中一个网站被攻击,导致日志爆满,/var分区无法写入导致,记录一下备忘 – –

windows2003 asp.net 安全设置

### 更新 2011年4月17号 ###
请谨慎修改第一点提到的activeds.dll与activeds.tlb这两个文件的权限,修改后很有可能会导致重启后无法连接服务器!!!
如果已经进行过此操作的朋友,请执行以下命令,重启服务器即可恢复。

  1. echo y|cacls "%WinDir%\ServicePackFiles\i386\activeds.dll" /G system:F administrators:F "Power Users:F" "Users:F"/C
  2. echo y|cacls "%WinDir%\ServicePackFiles\i386\activeds.tlb" /G system:F administrators:F "Power Users:F" "Users:F"/C

### 更新 2011年4月17号 ###

最近windows上一些asp.net的spy一直利用.net的权限来获取一些系统信息及不该看到的东西,以下设置可最大程度上防止这类行为:

1) 重新设置activeds的权限,保存为asp.bat可直接运行

  1. echo y|cacls "%WinDir%\ServicePackFiles\i386\activeds.dll" /G system:F administrators:F /C
  2. echo y|cacls "%WinDir%\system32\activeds.dll" /G system:F administrators:F /C
  3. echo y|cacls "%WinDir%\system32\activeds.tlb" /G system:F administrators:F /C
  4. pause

2) asp.net 1.1 的设置

  1. 打开文件 C:\WINDOWS\Microsoft.net\Framework\v1.1.4322\CONFIG\machine.config
  2. 找到这行: <identity impersonate="false" userName="" password=""/>
  3. impersonate的值改为true.

3) asp.net 2.0 的设置

  1. 随便找一个 asp.net 2.0 的站点
  2. 编辑全局配置
  3. 点击 “应用程序”
  4. 选择 “本地模拟” 用户名与密码留空

4) 重启服务器或IIS服务

修改bfd的proftpd配置文件

无意间查看bfd的日志,没想竟然对proftpd的日志抓取有问题,没有更改的话 日志是这样的:

  1. # 日志路径 /var/log/bfd_log
  2. Apr  3 04:15:02 servername bfd(8813): {proftpd} ffffxx.xx.xx.xx exceeded login failures; executed ban command '/etc/apf/apf -d ffffxx.xx.xx.xx  {bfd.proftpd}'.
  3. # 实际上,apf屏蔽的命令是 apf -d ffffxx.xx.xx.xx

可能作者笔误吧,sed没有加上g,g的意思为全局替换,修改如下:

  1. # bfd的规则 /usr/local/bfd/rules/proftpd
  2. # failed logins from a single address before ban
  3. # uncomment to override conf.bfd trig value
  4. # TRIG="10"
  5.  
  6. # file must exist for rule to be active
  7. REQ="/usr/sbin/proftpd"
  8.  
  9. if [ -f "$REQ" ]; then
  10.  LP="$AUTH_LOG_PATH"
  11.  TLOG_TF="proftpd"
  12.  
  13.  ## PROFTPD
  14.  ## 修改这行 ARG_VAL=`$TLOG_PATH $LP $TLOG_TF | sed -e 's/::ffff://' | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | tr -d ':' | sed -n -e '/proft
  15. pd/s/.*USER \(.*\) no such user found from \([^ ]*\).*/\2:\1/p'`
  16. fi
  17.  
  18. ARG_VAL=`$TLOG_PATH $LP $TLOG_TF | sed -e 's/::ffff://g' | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | tr -d ':' | sed -n -e '/proft
  19. pd/s/.*USER \(.*\) no such user found from \([^ ]*\).*/\2:\1/p'`
  20. fi
  21. # 新版本的bfd不知道是否有修正这个BUG,否则bfd无法调用apf 自动对proftpd恶意连接进行屏蔽!
  22. # 重启BFD, bfd -s
1 1