文章目錄
- 1、問題
- 問題一:解壓JDK報錯:gzip:stdin:not in gzip format。
- 問題二:在Linux下ping不通外網
- 問題三:解決虛擬機克隆后網卡eth0不見的問題
- 問題四:執行腳本報錯:syntax error: unexpected end of file或syntax error near unexpected token `fi'或-bash bad interpreter: No such file or directory
- 問題五:Authentication refused:bad ownership or modes for dircetory /root,ssh免密錯誤
- 問題六:centos下完全卸載mysql
- 2、使用技巧:
- 一、minimal版本的linux系統需要安裝以下常用的命令:
文章總體分為兩部分:問題和使用技巧。
1、問題
問題一:解壓JDK報錯:gzip:stdin:not in gzip format。
情景:
我先是通過命令:
wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
從oracle官網下載jdk。
然后執行解壓命令:tar -zxvfjdk-8u144-linux-x64.tar.gz,卻報錯:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
解決方法:
執行以下命令(將下載地址改為自己需要的版本)
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz
報錯原因:
通過file命令辨識一下壓縮文件的類型:
file jdk-8u144-linux-x64.tar.gz
結果卻是jdk-8u144-linux-x64.tar.gz:HTML document text…
原來這個壓縮文件是html |
這個文件之所以是html,是因為是:文件的下載鏈接不是直接指向文件,而是先指向一個頁面,在這個頁面里才是真的下載鏈接,所以我們通過wget下載的其實是一個頁面。通過以上的命令就OK了。
其他解決方法:
有些是因為解壓縮方式不正確,更改對應的解壓縮指令即可。
問題二:在Linux下ping不通外網
在linux中ping www.baidu.com 無法ping通,可能原因是DNS沒配置好
方法一:修改vi /etc/resolv.conf
增加如下內容:nameserver 114.114.114.114 (電信的DNS)nameserver 8.8.8.8(googel的DNS)
就可以實現ping通外網了
方法二:
ip a 或者 ifconfig 查看使用的網卡然后進入/etc/sysconfig/network-scripts找到對應的網卡進行修改
vi /etc/sysconfig/network-scripts/ifcfg-ethx
DEVICE=ethx
TYPE=Ethernet
ONBOOT=yes #網卡eth0設置為自啟用
BOOTPROTO=static
IPADDR=192.168.1.101
NETMASK=255.255.255.0
DNS1=114.114.114.114
重啟網卡 service network restart
方法三:(配置了前兩步依舊無法ping通外網,那么很大一部分原因就是沒有添加網關) |
如果添加了DNS還是無法ping外網,那就要查看路由中的網關設置 netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
這就表示網關沒有設置,添加路由網關
route add default gw 192.168.129.2(我的路由網關是這個)
再次查看netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth00.0.0.0 192.168.129.2 0.0.0.0 UG 0 0 0 eth0
添加成功,但是這種方法不是永久的,重啟服務器或者重啟網卡后悔失效。
靜態路由加到/etc/sysconfig/static-routes 文件中就行了,沒有這個文件就新建一個
如 route add default gw 192.168.129.2
則文件中加入
any net default gw 192.168.129.2
保存退出,重啟網卡驗證
問題三:解決虛擬機克隆后網卡eth0不見的問題
解決方法:
直接修改 /etc/sysconfig/network-script/ifcfg-eth0
刪掉UUID HWADDR
配置靜態IP地址
然后:
rm -rf /etc/udev/rules.d/70-persistent-net.rules
然后 reboot
另一種方法:
編輯/etc/udev/rules.d/70-persistent-net.rules,找到與ifconfig -a得出的MAC相同的一行(NAME='eth1’這一行),把它改為"NAME=eth0 ",然后把上面一行(這一行是對應的老網卡)(NAME=‘eth0’)刪除掉。
問題四:執行腳本報錯:syntax error: unexpected end of file或syntax error near unexpected token `fi’或-bash bad interpreter: No such file or directory
**問題情境:**我們在用NodePad++編輯完腳本文件并上傳到服務器后,直接運行腳本會經常報出上面兩個錯誤。
解決方法:
1、vi nginx_check.sh
2、直接輸入":",然后在":"之后輸入"set ff",回車即可看到腳本格式,可以看到當前腳本格式,若為dos則需要接著以下步驟改為unix格式。
3、我們需要把格式改為unix,方法是輸入":set ff=unix",也可以輸入":set fileformat=unix"。輸入完之后,回車即可完成切換格式。
4、然后我們再輸入":set ff"來查看格式,可以看到當前腳本格式變成了我們想要的"unix"了。
5、這時我們再執行nginx_check.sh應該就沒問題了
另一種解決方法:在notepad中直接修改文件格式為unix即可。
問題原因:
上面兩個問題都是由于.sh文件的格式為dos格式。而linux只能執行格式為unix格式的腳本。因為在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh文件在每行都會多了一個CR,所以Linux下運行時就會報錯找不到命令。
問題五:Authentication refused:bad ownership or modes for dircetory /root,ssh免密錯誤
服務器配置了免密,但是ssh過去時報錯,錯誤如下:
Authentication refused:bad ownership or modes for dircetory /root
因為之前有過經驗id_ras的權限非600,導致免密失敗,檢查發現id_ras權限正常600,然后檢查發現root目錄的權限配置成了777,改成700后,免密正常登陸
問題六:centos下完全卸載mysql
參考:https://www.cnblogs.com/wanghuaijun/p/6398240.html
2、使用技巧:
一、minimal版本的linux系統需要安裝以下常用的命令:
yum install net-tools 安裝ifconfig命令
yum install lrzsz 這是一個用于上傳下載文件的小插件
yum -y install tree 目錄以樹結構顯示
yum -y install wget