【摘錄 民工哥技術之路】Linux運維常見問題及處理方法

1.shll腳本不執行

問題:

   腳本語法正確,

         報: bad interpreter:No such file or directory

         腳本爲Windows下編輯上傳至Linux服務器

原因:

   在DOS/windows裏,文本文件的換行符爲rn,而在Linux系統裏爲n

  所以,在DOS/Windows中編輯過的文本文件到了Linux裏每一行都多了一個^M

解決:

①在Linux下編寫腳本

②vim  :%s/r//g :%s/^M//g(^M輸入用Ctrl+v,Ctrl+m)

附:sh -x script.sh,可單步執行並回顯結果,有助於排查腳本問題


2.crontab輸出結果控制

問題:

/var/spool/clientmqueue 目錄佔用空間超過100G

原因:

cron中執行的程序有輸出內容, 輸出內容會以郵件形式發給cron的用戶,而sendmail沒有啓動所以就產生了/var/spool/clientmqueue目錄下的那些文件,

日積月累可能會佔滿磁盤

解決:

①手動刪除  ls |xargs rm -rf

②徹底解決: 在cron的自動執行語句後加上   >/dev/null 2>&1


3.telnet/ssh很慢

問題:

    某個服務,cllient端訪問server端異常,服務/系統均無異常,client ping server 正常,但client telnet server很慢,究其因爲DNS反解析問題

原因:

 because your PC doesn't do a reverse DNS lookup on your PC then ...

when you telnet ftp into your linuxbox,it'll do a DNS lookup on you.

解決:

①修改/etc/hosts 使hostname和IP對應

②在/etc/resolv.conf 註釋掉nameserver或者找一個可用的nameserver


4.Read-only file system

問題:

mysql中建表不成功,提示 

mysql> create table test(cold name 1 char(1));

ERROR 1005(HY000):Can't create table 'test'(error:30)

經檢查mysql用戶權限及相關目錄權限沒問題,用p error:30提示信息爲: OS error code:30:Read-only file system

可能原因:

①文件系統破壞

②磁盤有壞道

③fstab文件配置錯誤,如分區格式錯誤(將 ntfs寫成fat)、配置指令拼寫錯誤等

解決:

①重啓服務器

②重新掛載分區


5.文件刪除後磁盤空間並未釋放

問題:

某服務器收到磁盤/home使用率 95%告警

df -h 查看易用磁盤爲100G,du -sh *查看 所使用的空間總和僅50G

原因:

工程師將正在寫入的文件用rm 刪除,導致文件刪除但磁盤空間沒釋放的問題

解決:

①最簡單便捷的方式   重啓系統或重啓相關服務

②查找相關進程並kill

 命令 lsof |grep deleted

找到這個進程後 可使用kill -9 PID,echo > /proc/PID/fd/33 來殺進程

③清理正在使用的文件使用   > filename 或  cat /dev/null filename  來清空文件


6.too many open files

問題:

報 too many open files 錯誤

解決:

[root@xxxx ~]# echo " " >> /etc/security/limits.conf 
[root@xxxx~]# echo "* soft nproc 65535">> /etc/security/limits.conf 
[root@xxxx ~]# echo "* hard nproc 65535">> /etc/security/limits.conf 
[root@xxxx ~]# echo "* soft nofile 65535">> /etc/security/limits.conf 
[root@xxxx ~]# echo "* hard nofile 65535">> /etc/security/limits.conf 
[root@xxxx ~]# echo " " >> /root/.bash_profile 
[root@xxxx ~]# echo "ulimit -n 65535" >> /root/.bash_profile 
[root@xxxx ~]# echo "ulimit -u 65535" >> /root/.bash_profile

重新登錄服務器執行  ulimit -a 即可看到配置生效了(open files)

[root@xxxx ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 515245
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 65535
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章