通過gui來使用
通過api來使用
通過cli來使用
通過tui來使用
進程不在,但tcp連接還一直存在的解決辦法--tcpkill命令
http://www.centoscn.com/CentOS/Intermediate/2013/1025/1979.html
在linux系統中,遇到TCP鏈接遲遲不能釋放的情況,類似FIN_WAIT1、FIN_WAIT2的狀態,釋放時間不確定,而且對應的程序已經關閉,相應的端口也不再監聽,無法通過殺進程來解決,這種情況下,為了快速恢復正常,不得不采用重啟服務器的方法加以解決,在經過各大網站搜索找到linux下dsniff包中含有tcpkill命令,該命令可以將上述狀態的TCP鏈接加以清除,進而免除服務器重啟的情況。
在dsniff集成工具包中有一個tcpkill命令,可以解決這類問題:
下載地址:http://pkgs.repoforge.org/dsniff/ 此目錄中可以找到相應系統的版本
wget http://pkgs.repoforge.org/dsniff/dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm
rpm -ivh dsniff-2.4-0.1.b1.el5.rf.x86_64.rpm
安裝完成后可以發現系統多了一個tcpkill的命令,命令使用方法如下:
tcpkill -9 port ftp &>/dev/null
tcpkill -9 host 192.168.10.30 &>/dev/null
tcpkill -9 port 53 and port 8000 &>/dev/null
tcpkill -9 net 192.168.10 &>/dev/null
tcpkill -9 net 192.168.10 and port 22 &>/dev/null
win與linux之間的亂碼與格式混亂問題
文件名與文件內容亂碼
文件是在Windows下創建的,而Windows的文件名中文編碼默認GBK,Linux中默認文件名編碼為UTF-8,編碼不一致導致了文件名亂碼的問題,解決這個問題需要對文件名進行轉碼,這個工具就是convmv。
convmv就是更改文件名編碼方式的一個工具。
比如
sudo convmv -f gbk -t utf-8 -r --notest /home
就是將/home目錄下原來文件名是gbk編碼方式的全部改為utf-8格式的。這里 -f 后面為原來的編碼方式,-t 后面是要更改為的編碼方式, -r 表示這個目錄下面的所有文件, --notest 表示馬上執行,而不是僅僅測試而已。另外這命令好像要root才能執行,因此要加上 sudo。
windows下的一個文本文件復制到linux下后,文件名與內容都是亂碼,用下面處理一下就可以了。這樣就解決了文件名與內容兩個問題。
[root@kvm2 share]# iconv -f gbk -t utf-8 Ŀ??.txt -o b.txt
[root@kvm2 share]# rpm -qf /usr/bin/iconv
glibc-common-2.17-106.el7_2.4.x86_64
[root@kvm2 share]# rpm -qf /usr/bin/convmv
convmv-1.15-2.el7.noarch
在Linux中查看文件編碼可以通過以下幾種方式:
1.在Vim 中可以直接查看文件編碼
:set fileencoding
即可顯示文件編碼格式。
如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在
~/.vimrc 文件中添加以下內容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照 fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。
Linux下新建的txt文件在Windows下用記事本打開會擠在一起(沒有了換行符,變成黑方塊),原因是Windows下換行符號是“\r\n”,而linux下是“\n”沒有”\r”,記事本不支持\n換行(它只支持\r\n形式的換行),所以會那樣。解決方法給個最簡單的:直接修改擴展名為doc,然后用word打開。 需要的話自己拷貝回txt
http://www.openfirmware.info/OpenBIOS
It is Open Firmware's goal to work on all common platforms, like x86, AMD64, PowerPC, ARM, Sparc and Mips. With its flexible and modular design, Open Firmware targets servers, workstations and embedded systems, where a sane and unified firmware is a crucial design goal and reduces porting efforts noticably.
vga bios
主板 bios
raid bios
等等
層級
1.硬件
2.bios
3.bt(bootloader)
4.kernel
5.shell
6.daemon
7.app
遠程連接
VNC
VNC使用的是RFB協議來做屏幕分享和遠程操作的軟件,由著名的AT&T歐洲研究實驗室開發。使用時需要客戶端軟件和服務器軟件配合使用。
遠程桌面
遠程桌面使用RDP(Remote Desktop Protocol)遠程桌面協議,大部分Windows都默認支持此協議,可以遠程接入操作桌面。
RFB和RDP區別
RFB是在服務器端將窗口在顯存中畫好之后將圖像傳給客戶端,客戶端只充當一個圖像解碼顯示的角色; RDP則將畫圖的工作交給了客戶端,服務器需要了解客戶端顯示能力的具體情況,以便作出相應調整。
RFB主要傳圖像,RDP主要傳指令。就一般應用而言,RFB數據量太大,RDP對客戶端要求較高,因此RFB適用於瘦客戶端,RDP適用於低速網絡。
軟鏈接
今天在安裝mysql軟件的時候,mysql/bin目錄下用ln -s mysql /usr/local/bin/mysql 創建軟連接,后來啟用mysql時彈出錯誤:
-bash: /usr/local/bin/mysql: Too many levels of symbolic links
從網上查找了一下原因,原來是建立軟連接的時候采用的是相對路徑,所以才會產生這樣的錯誤,解決方式是采用絕對路徑建立軟鏈接:
ln -s /usr/../mysql/bin/mysql /usr/local/bin/mysql
這樣問題就解決了。
http://www.server-world.info/en/ 這個站點還比較清晰
httpd與tomcat區別
聯系
1)Apache是普通服務器,本身只支持html即普通網頁,可以通過插件支持php,還可以與Tomcat連通(Apache單向連接Tomcat,就是說通過Apache可以訪問Tomcat資源,反之不然)。
2)Apache只支持靜態網頁,但像asp、jsp、php、cgi等動態網頁就需要Tomcat來處理。
3)Apache和Tomcat整合使用:
如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求;
如果客戶端請求動態頁面,則是Tomcat服務器響應請求,將解析的JSP等網頁代碼解析后回傳給Apache服務器,再經Apache返回給瀏覽器端。
這是因為jsp是服務器端解釋代碼的,Tomcat只做動態代碼解析,Apache回傳解析好的靜態代碼,Apache+Tomcat這樣整合就可以減少Tomcat的服務開銷。
4)Apache和Tomcat是獨立的,在同一台服務器上可以集成。
區別
Apache是有C語言實現的,支持各種特性和模塊從而來擴展核心功能;Tomcat是Java編寫的,更好的支持Servlet和JSP。
1、Apache是Web服務器,Web服務器傳送(serves)頁面使瀏覽器可以瀏覽,Web服務器專門處理HTTP請求(request),但是應用程序服務器是通過很多協議來為應用程序提供 (serves)商業邏輯(business logic)。
Tomcat是運行在Apache上的應用服務器,應用程序服務器提供的是客戶端應用程序可以調用(call)的方法 (methods)。它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是Apache的擴展,但是可以獨立於apache運行。
2、Apache是普通服務器,本身只支持html靜態普通網頁。不過可以通過插件支持PHP,還可以與Tomcat連通(單向Apache連接Tomcat,就是說通過Apache可以訪問Tomcat資源,反之不然),Tomcat是jsp/servlet容器,同時也支持HTML、JSP、ASP、PHP、CGI等,其中CGI需要一些手動調試,不過很容易的。
3、Apache側重於http server,Tomcat側重於servlet引擎,如果以standalone方式運行,功能上Tomcat與apache等效支持JSP,但對靜態網頁不太理想。
4、Apache可以運行一年不重啟,穩定性非常好,而Tomcat則不見得。
5、首選web服務器是Apache,但Apache解析不了的jsp、servlet才用tomcat。
6、Apache是很最開始的頁面解析服務,tomcat是后研發出來的,從本質上來說tomcat的功能完全可以替代Apache,但Apache畢竟是tomcat的前輩級人物,並且市場上也有不少人還在用Apache,所以Apache還會繼續存在,不會被取代,apache不能解析java的東西,但解析html速度快。
兩者例子:
Apache是一輛車,上面可以裝一些東西如html等,但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上,那這個桶就是TOMCAT。
兩者整合:
Apache是一個web服務器環境程序,啟用他可以作為web服務器使用不過只支持靜態網頁,不支持動態網頁,如asp、jsp、php、cgi
如果要在Apache環境下運行jsp就需要一個解釋器來執行jsp網頁,而這個jsp解釋器就是Tomcat
那為什么還要JDK呢?因為jsp需要連接數據庫的話就要jdk來提供連接數據庫的驅程,所以要運行jsp的web服務器平台就需要APACHE+TOMCAT+JDK
整合的好處:
如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求
如果客戶端請求動態頁面,則是Tomcat服務器響應請求
因為jsp是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷
控制台終端配色方案
一般的Linux發行版默認的終端都是16色的,但事實上幾乎所有的終端都支持256色終端。只需要把環境變量TERM設為xterm-256color(xterm算是終端模擬器的一個標准,Gnome Terminal用gnome-256color,Konsole可以用konsole-256color)。
其實,很多終端,比如 xterm、urxvt,以及 Mac OSX 中的 Iterm.app 等都可以支持256色,可以在這些終端下看到更加細膩優雅的顏色表現。
這里涉及到了幾個重要的程序的配置,供大家參考。注意,不是所有的終端和命令行應用都支持256色。
默認的/etc/DIR_COLOR及其三個文件是針對ls這個命令的配色方案
vim-enhanced這個包有vi的配色方案
http://www.linuxidc.com/Linux/2016-02/128068.htm
相同的colorschema,vim和gvim的顏色差距還是很大的,因為gvim使用X的顏色,而vim只能使用終端提供的顏色,所以造成了二者的顯示差異。
background schemas(白灰黑三種,在8色模式下)
8 colors mode
256 colors mode
/usr/share/terminfo目錄是所有支持的終端類型
xterm開啟256色
現在的終端模擬器早就支持256色了,不過默認可能還是8色的。
查看終端類型
$ echo $TERM
xterm
tty是linux,ssh是xterm
查看xterm終端支持的顏色
$ tput colors
8
tput clos lines
xterm終端默認還是8色的
只要將終端類型更改為xterm-256color即可,有兩種方式可以來修改
改網卡名
Fedora 搞的consistent network device names本人覺的很哦心,很難記。
all onboard ethernet adapters are labeled as emX (em1, em2…) and all PCI ethernet adapters are labeled as pXpX (p[slot]p[port], like p7p1 for port 1 on slot 7).
我的網卡名就變成了p3p1
下面我們就來把她改成eth0
ubuntu
安裝ssh,默認沒有裝
$sudo apt-get install openssh-server
切換root用戶
$sudo su,然后輸入普通用戶的密碼就可以了
注意: 出於安全考慮,默認時Ubuntu的root用戶時沒有固定密碼的,它的密碼是隨機產生並且動態改變的,貌似是每5分鍾改變一次,所以用su(switch user)是不可以的,因為我們不知道root的密碼
默認root用戶是無固定密碼的,並且是被鎖定的,如果想給root設置一個密碼,只需執行命令:sudo passwd root 然后根據提示一步一步來
這樣就可以su root ,輸入root密碼切換到root用戶
localization問題
/usr/local/locale這個目錄非常重要,發現這個是受svn-book的第七章啟發,這里面關於語言的解釋比較清晰。
[root@localhost LC_MESSAGES]# pwd
/usr/share/locale/zh_CN/LC_MESSAGES
[root@localhost LC_MESSAGES]# file make.mo
系統支持的
locale -a(有多種語言)
當前定義的
locale()
只重定義某一項
export LC_MESSAGES=zh_TW
[root@host02 .subversion]# svn hel
未知的命令: 'hel'
請使用 'svn help' 以了解用法.
[root@host02 .subversion]# export LC_MESSAGES=zh_CN
[root@host02 .subversion]# svn hel
未知命令: “hel”
使用“svn help”得到用法。
svn能這樣顯示,是因為它本身支持國際化,即Localization
程序必須有.mo模塊
[root@localhost LC_MESSAGES]# rpm -ql tar
/bin/gtar
/bin/tar
/usr/share/doc/tar-1.23
/usr/share/doc/tar-1.23/AUTHORS
/usr/share/doc/tar-1.23/ChangeLog
/usr/share/doc/tar-1.23/ChangeLog.1
/usr/share/doc/tar-1.23/NEWS
/usr/share/doc/tar-1.23/README
/usr/share/doc/tar-1.23/THANKS
/usr/share/doc/tar-1.23/TODO
/usr/share/info/tar.info-1.gz
/usr/share/info/tar.info-2.gz
/usr/share/info/tar.info.gz
/usr/share/locale/bg/LC_MESSAGES/tar.mo
/usr/share/locale/cs/LC_MESSAGES/tar.mo
/usr/share/locale/da/LC_MESSAGES/tar.mo
/usr/share/locale/de/LC_MESSAGES/tar.mo
/usr/share/locale/el/LC_MESSAGES/tar.mo
34.改root密碼
[root@84-monitor ~]# passwd
Changing password for user root.
New password:
/usr/share/cracklib/pw_dict.pwd: No such file or directory
PWOpen: No such file or directory
[root@84-monitor ~]# yum -y reinstall cracklib-dicts
Linux 內核目前的開發模式是Linus Torvalds制作的新版本的發布,也被稱為“vanilla”或“mainline”的內核,這意味着它們包含了主要的,通用的開發分支。在托瓦爾茲 進行初始一輪集成由所有其他程序員,幾個回合的bug修正預發布版的主要變化之后,這個分支大約每3個月正式發布一個新的版本。
32.redis的內存分配
我們知道Redis並沒有自己實現內存池,沒有在標准的系統內存分配器上再加上自己的東西。所以系統內存分配器的性能及碎片率會對Redis造成一些性能上的影響。
Redis采用不同內存分配器tcmalloc和jemalloc和glibc碎片率對比
31.linux下watchdog
Linux 自帶了一個 watchdog 的實現,用於監視系統的運行,包括一個內核 watchdog module 和一個用戶空間的 watchdog 程序。
內核 watchdog 模塊通過 /dev/watchdog 這個字符設備與用戶空間通信。用戶空間程序一旦打開 /dev/watchdog 設備(俗稱“開門放狗”),
就會導致在內核中啟動一個1分鍾的定時器(系統默認時間),此后,用戶空間程序需要保證在1分鍾之內向這個設備寫入數據(俗稱“定期喂狗”),
每次寫操作會導致重新設定定時器。如果用戶空間程序在1分鍾之內沒有寫操作,定時器到期會導致一次系統 reboot 操作(“狗咬人了”呵呵)。
通過這種機制,我們可以保證系統核心進程大部分時間都處於運行狀態,即使特定情形下進程崩潰,
因無法正常定時“喂狗”,Linux系統在看門狗作用下重新啟動(reboot),核心進程又運行起來了。多用於嵌入式系統。
Watchdog在實現上可以是硬件電路也可以是軟件定時器,能夠在系統出現故障時自動重新啟動系統。在Linux 內核下,
watchdog的基本工作原理是:當watchdog啟動后(即/dev/watchdog 設備被打開后),如果在某一設定的時間間隔內/dev/watchdog沒有被執行寫操作, 硬件watchdog電路或軟件定時器就會重新啟動系統。
31.Partition 1 does not end on cylinder boundary.警告理解
分區 1 沒有在柱面上結束。
很多論壇上都說出現這種情況的原因是正常的,總體的原因如下
fdisk –l 命令是按照柱面來進行分區顯示的,所以需要按照垂直的空間進行理解,但現在的計算機在顯示時仍然會按照扇區來理解(因為現在磁盤是使用LBA(使用扇區進行尋址)取代以前的CHS(柱面、磁頭、扇區)方式記錄硬盤分區的),所以會判斷分區沒有在柱面結束;如果我們使用命令 sfdisk –uS -l ,這個命令的意思是:“give size in sectors instead of sylinders”即是按照扇區的來進行分區顯示,這樣就可以看到以扇區方式顯示分區的了。可以看到相鄰邏輯分區之間都有 64 扇區的空間,那里存放邏輯分區表。
現代操作系統使用LBA而不是CHS來記錄硬盤分區.如果用扇區代替柱面,我們將看到:
sfdisk -uS -l /dev/sda
30.centos,安裝時的分區方案
有三個標准可以選擇:基礎的標准分區(針對單磁盤而言),多磁盤的raid分區,多磁盤的lvm
Linux系統一般需要三個分區:Boot分區、根分區、swap分區。其中,必不可少的是根分區,boot分區和swap分區可有可無。考慮到內存可能不足,一般保留swap分區。
分區表只有64bytes,最多只能分成四個分區,其中擴展分區最多只能有一個。所以推薦的分區方法是P+P+P+E,這樣系統沒有用完的空間可在系統安裝完成后根據需要自行分配。如果分區方式是P+P+P+P,那系統多余的空間將無法利用。
安裝boot loader
Install boot loader on /dev/sda:將boot引導安裝到磁盤/dev/sda前512bytes.
Boot loader operating system list:boot引導的系統名單。如果是雙系統,在這里還會有Window的列表。Default即指定默認的啟動系統。
注意:當初我安裝雙系統時,Windows下有5個盤:C、D、E、F、G,我是直接把筆記本D盤的空間釋放出來,大概100G。這樣,在手動分區時,sda1,sda4,sda5,sda6、sda7存在。由於Oracle對RHEL系統版本有要求,重裝過多次系統。出現以下情況:
1> 因為已經有1個主分區sda1和一個擴展分區sda4存在(注意:sda5,sda6,sda7是sda4這個擴展分區的衍生分區),因此在此只能新建兩個主分區,sda2和sda3.第一次我分別將兩個分區建為boot分區和根分區,這樣在安裝boot loader這一步時顯示: Install boot loader on /dev/sda,可以直接安裝到硬盤MBR上。
2> 第二次將sda2和sda3分別建為根分區和swap分區,結果在安裝boot loader這一步時顯示:Install boot loader on /dev/sda2,即使點開Change device,也沒有/dev/sda這一項,這意味着boot loader 不能安裝在MBR上,這就意味着按照默認的MBR,linux將無法引導。最后,還是在Rescue Installed System,即救援模式下,將grub文件安裝到/dev/sda下:grub-install /dev/sda;
http://en.wikipedia.org/wiki/List_of_tools_to_create_Live_USB_systems 多啟動規范的一些列表 multiboot specification
29.YUMI或UUI安裝centos6.4-64-minimal不成功的解決辦法
用UUI制作完成后只需要將minimal.iso鏡像拷貝到u盤根目錄下即可,否則會報錯
missing iso 9660 image
images文件夾和*.iso在同級目錄
將ISOs/下鏡像直接解壓至當前目錄
YUMI Boot other ISO 最下面的要提供 install.img路徑,可能解包以后找不到路徑
選擇 sda1 填路徑即可,
/Multiboot/ISOs/images/install.img
/Multiboot/CentOS-6.6-x86_64-minimal/images/install.img
遇到下面的彈窗報錯,通常在分區格式化完成后彈出
“unable to read package metadata.this may be due to a missing repodata directory . please ensure that your install tree has been correctly generated ......”
原因:這是因為/Multiboot/ISOs/repodata/下的文件都沒有后綴名,無法識別,所以彈出上面報錯
辦法:對照/Multiboot/ISOs/repodata/repomd.xml中的uuid的后綴名,逐個補上后綴名即可。總共8個文件
將此:e0d5ad3bff4d0bd6ffd5037d6e76049b09c1d4f697445be6071d100f865a46f3
添加為:e0d5ad3bff4d0bd6ffd5037d6e76049b09c1d4f697445be6071d100f865a46f3-other.xml.gz
http://download.fedoraproject.org/pub/fedora/linux/releases/22/Workstation/x86_64/iso/Fedora-Live-Workstation-x86_64-22-3.iso
用YUMI-2.0.2.8.exe安裝下面這兩個鏡像,選擇GRUB from RAM,是成功的,2g的u盤只用了一半。
XenServer-7.0.0-main.iso
VMware-VMvisor-Installer-5.1.0.update01-1065491.x86_64.iso
28.即時生效與放到文件中永久生效
hostname xxx vi /etc/sysconfig/network ifconfig xxx vi /etc/sysconfig/network-scripts/ifcfg-eth0 sysctl echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all ulimit -n 65535 vi /etc/profile
27.服務4種啟動方式
systemV systemd bsd upstart
26.rpc.statd
問題描述: 發現運行的進程中有rpc.statd服務,對這個服務很是不了解,就進行探索,發現,在 linux中的 /usr/sbin 目錄中有兩個文件 rpc.rstatd 和 rpc.statd, 文件名非常相象,他們各自是干啥的呢?
解答:
在 linux的 /usr/sbin 目錄中有兩個文件 rpc.rstatd 和 rpc.statd, 文件名非常相象,但所起的作用是不同的。
用途 :
1. 執行 /usr/sbin/rpc.rstatd 命令會啟動 rstatd 后台程序,它是一個服務器,可以從系統核心中獲取系統性能統計的相關信息,將結果返回給調用程序。 rstatd daemon 通常是由 inetd daemon 啟動的。
目前在進行壓力測試時,用戶經常在客戶端通過使用 load runner 軟件來收集應用或數據庫服務器的性能數據。 其就是通過給服務器上的 rstatd 后台程序發請求來實現的。
2. /usr/sbin/rpc.statd 命令會啟動 statd 后台程序。 在 NFS 環境中 statd daemon 與 lockd daemon 相結合,為鎖機制提供 crash 和 recovery 功能。 statd daemon 除負責維護相關的連接信息外,還監控 /var/statmon/sm 目錄, /var/statmon/sm.bak 目錄和 /var/statmon/state 文件中的狀態信息。 statd 通常是在 lockd 之前啟動, statd daemon 的啟動和停止是通過 調用系統的 SRC 命令來實現的。
[root@225-oth run]# service nfslock status
rpc.statd (pid 1016) is running...
25.交互模式與直接模式
asterisk -r與asterisk -rx ""
sqlite3
mysqladmin與mysql -p
virsh
24.Linux下編譯軟件時指定安裝目錄的好處
源碼的安裝一般由3個步驟組成:配置(configure)、編譯(make)、安裝(make install)。
Configure是一個可執行腳本,它有很多選項,在待安裝的源碼路徑下使用命令./configure –help輸出詳細的選項列表。
其中--prefix選項是配置安裝的路徑,如果不配置該選項,安裝后可執行文件默認放在/usr /local/bin,庫文件默認放在/usr/local/lib,配置文件默認放在/usr/local/etc,其它的資源文件放在/usr /local/share,比較凌亂。
如果配置--prefix,如:
./configure --prefix=/usr/local/test
可以把所有資源文件放在/usr/local/test的路徑中,不會雜亂。
用了—prefix選項的另一個好處是卸載軟件或移植軟件。當某個安裝的軟件不再需要時,只須簡單的刪除該安裝目錄,就可以把軟件卸載得干干凈凈;移植軟件只需拷貝整個目錄到另外一個機器即可(相同的操作系統)。
當然要卸載程序,也可以在原來的make目錄下用一次make uninstall,但前提是make文件指定過uninstall。
23.程序里的環境變量
如果有的程序需要一些環境變量的支持,例如在它的man手冊頁里有變量定義,這時只需要在shell命令行里設置對應的變量名即可
因為這種變量名已在程序里規定好了,名字不能亂起。
echo export TMOUT=1000000 >> /root/.bash_profile; source .bash_profile
22.帶進度條提示的拷貝
wget本身就有
rsync命令
#rsync -av --progress /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/
可以實現本機帶進度條提示拷貝,可以實現不同機器帶進度條提示拷貝,可以拷貝多個文件
scp命令
#scp -v /mnt/yidong2/full20100526.tar.gz /mnt/yidong1/
本機拷貝無法顯示進度
#scp -v /mnt/yidong2/full20100526.tar.gz root@192.168.1.1:/mnt/yidong1/
不同機器拷貝可以顯示進度條,即使不帶“-v”參數也可以顯示進度條
#scp -v /mnt/yidong2/full20100526.tar.gz root@127.0.0.1:/mnt/yidong1/
變相實現本機帶進度條提示拷貝,可以不帶“-v”參數
cp命令
沒有找到帶進度條提示拷貝,有知道的朋友請分享,謝謝。
關於rsync, scp, cp拷貝速度
我做了一個簡單的測試,拷貝一個240M的文件,僅供參考
#cp full20100526.tar.gz full20100526.tar.gz.bak
速度很快
#rsync -av --progress full20100526.tar.gz full20100526.tar.gz.bak
速度比較快(113.10MB/s)
#scp -v full20100526.tar.gz root@127.0.0.1:/root/full20100526.tar.gz
速度有些慢(26.9MB/s)
21.刪除大量的log檔案報錯處理
rm、cp、mv是unix下面常用到的檔案處理指令,當我們需要刪除大量的log檔案,如果檔案數太多就會出現此訊息【/bin/rm: Argument list too long】
解決方式如下:
例如要刪除 /tmp/*.log
則執行【ls /tmp/*.log | xargs rm -f】這樣就可以囉^__^,其他cp,mv同理!
-bash-3.2$ pwd
/u01/app/11.2.0/grid/rdbms/audit
-bash-3.2$ ll|wc -l
895646
-bash-3.2$ rm -rf *
-bash: /bin/rm: Argument list too long
此例類似 find的-exec選項
在使用find命令的-exec選項處理匹配到的文件時,find命令將所有匹配到的文件一起傳遞給exec執行。不幸的是,有些系統對能夠傳遞給 exec的命令長度有限制,這樣在find命令運行幾分鍾之后,就會出現溢出錯誤。錯誤信息通常是“參數列太長”或“參數列溢出”。這就是xargs命令 的用處所在,特別是與find命令一起使用。Find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像 -exec選項那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,並如此繼續下去。
20.manual section
MANUAL SECTIONS
The standard sections of the manual include:
1 User Commands
2 System Calls
3 C Library Functions
4 Devices and Special Files
5 File Formats and Conventions
6 Games et. Al.
7 Miscellanea
8 System Administration tools and Deamons
Distributions customize the manual section to their specifics, which often include additional sections.
et. Al. 等,等等
specifics n. 細節;特性(specific的復數);詳情
19.時間戳與時間
unix時間戳,1970年
app時間戳,例如mysql,excel,php,java等
Unix時間戳轉換工具可以把Unix時間戳轉成北京時間,也可以把北京時間轉換成unix時間戳
UNIX時間又稱POSIX時間/新紀元時間(Epoch Time):從協調世界時1970年1月1日0時0分0秒起到現在的總秒數,不包括閏秒。正值表示1970以後,負值則表示1970年以前。
Unix 2038 bug(Jason hatchet bug)
說到UNIX時間不得不提Unix 2038 bug(Jason hatchet bug):2038年1月19日3時14分07秒,32位元系統的UNIX時間將會被重置。
32位的UNIX系統會以32位二進制數字表示時間,它們最多只能表示至協調世界時間2038年1月19日3時14分07秒(二進制:01111111 11111111 11111111 11111111),在下一秒二進制數字會是10000000 00000000 00000000 00000000,這是負數,因此各系統會把時間誤解作1901年12月13日20時45分52秒(亦有說回歸到1970年)。這時可能會令軟件發生問題,導致系統癱瘓。
目前解決方案是把系統由32位轉為64位系統。在64位系統下,此時間最多可以表示到292,277,026,596年12月4日15時30分08秒。
18.anaconda
anaconda-ks.cfg是你安裝本系統時自動生成的一個配置文件,可以用在其它安裝過程中。
install.log是安裝的日志文件,一般是安裝的每一個軟件包。
install.log.syslog是安裝時對用戶及用戶組的配置,如創建用戶、用戶組等。
17.命令行下正常能執行,放入crontab不能執行 2014.11.5
命令行下正常能執行,放入crontab 下老是報錯,不是提示找不到asterisk命令就是提示不能找到某個庫,那只能說明一個問題,是你的環境變量有問題,網上的一些方法也不行,例如
在crontab -e里面加入以下是不成功的,也即在/var/spool/cron/root里,
SHELL=/bin/bash
#PATH=/sbin:/bin:/usr/sbin:/usr/bin
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
最后在com這個腳本開頭加入下面一行
source /etc/profile終於成功了 折騰了一下午
X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Date: Wed, 5 Nov 2014 16:54:01 +0800 (CST) Status: RO /var/prtg/scripts/com: line 3: asterisk: command not found Auto-Submitted: auto-generated X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/oracle/10.2.0.3/client/bin:/root/bin:/usr/local/lib> X-Cron-Env: <SHELL=/bin/bash> X-Cron-Env: <HOME=/root> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Date: Wed, 5 Nov 2014 17:04:01 +0800 (CST) Status: RO asterisk: error while loading shared libraries: libocilib.so.3: cannot open shared object file: No such file or directory
16.查看文件編碼
文件編碼查看
1.在Vim中可以直接查看文件編碼
:set fileencoding
即可顯示文件編碼格式。
如果你只是想查看其它編碼格式的文件或者想解決用Vim查看文件亂碼的問題,那么你可以在
~/.vimrc 文件中添加以下內容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
這樣,就可以讓vim自動識別文件編碼(可以自動識別UTF-8或者GBK編碼的文件),其實就是依照fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ASCII)編碼打開。
2. enca (如果你的系統中沒有安裝這個命令,可以用sudo yum install -y enca 安裝 )查看文件編碼
$ enca filename
filename: Universal transformation format 8 bits; UTF-8
CRLF line terminators
需要說明一點的是,enca對某些GBK編碼的文件識別的不是很好,識別時會出現:
Unrecognized encoding
3. file 文件名
文件編碼轉換
1.在Vim中直接進行轉換文件編碼,比如將一個文件轉換成utf-8格式
:set fileencoding=utf-8
2. enconv 轉換文件編碼,比如要將一個GBK編碼的文件轉換成UTF-8編碼,操作如下
enconv -L zh_CN -x UTF-8 filename
3. iconv 轉換,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如將一個UTF-8 編碼的文件轉換成GBK編碼
iconv -f GBK -t UTF-8 file1 -o file2
15.Ring buffer
Ring buffer是整個trace系統使用緩存管理的一種方式, 由於trace可能在內核運行的任何時候發生, 這種kernel的不確定狀態決定了ring buffer的寫操作中不能有任何引起睡眠的操作, 而且ring buffer的操作頻率極高,所以在ring buffer實現里有很多高效的方式來處理多處理器, 讀寫同步的機制. 理解ring buffer是我們理解整個kernel trace的基礎. 本文分析的源代碼版本為linux kernel 2.6.30, 分析的代碼基本位於kernel/trace/ring_buffer.c中.另外,為了描述的方便,下文ring buffer用RB來代替.
如何修改linux主機名才能生效?
IP地址 主機名/域名 別名
主機名(相當於windows的計算機名)通常在局域網內使用,通過hosts文件,主機名就被解析到對應ip;
域名通常在internet上使用,但如果本機不想使用internet上的域名解析,這時就可以更改hosts文件,加入自己的域名解析
很多人使用hostname 主機名 來修改,其實這個只是做為暫時的,重啟后將恢復到原來的名字.
很多人說修改/etc/hosts文件,其實這個文件里的主機名只是為來提供給dns解析的.如果你用不上dns,那修改這個沒用.
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost6.localdomain6
ip地址 計算機名(主機名) 域名 別名 這是完整的信息
修改/etc/hosts自動生效
只需要修改主機名,其實是修改這個文件etc/sysconfig/network這個文件里的主機名.
NETWORKING=yes
HOSTNAME=主機名
------------------------------------------------------------------------
記得重啟!!!
------------------------------------------------------------------------
完整:
第一步:
#hostname oratest
第二步:
修改/etc/sysconfig/network中的hostname
第三步:
修改/etc/hosts文件
[root@rdo ~]# hostname rdo [root@rdo ~]# hostname -f rdo.test.com 要實現上面的這個效果,需要修改兩個文件 編輯 /etc/sysconfig/network ,你需要加入一行,記住HOSTNAME,必須大寫。好像需要重啟計算機生效 # cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=rdo 編輯 /etc/hosts,增加一行,即時生效 192.168.178.2 rdo.test.com rdo
主機名,域名,fqdn,url
10.java環境
JAVA程序的運行必須要安裝JAVA RUNTIME ,也就是運行所需要的環境;我們可以通過安裝JRE 或者JDK 所獲得;如果我們只是應用不是開發,只下載JRE 的包就足夠;
JDK包里面也包含JRE;本文以JRE的安裝為例;JRE中還包括瀏覽器所需要的JAVA插件;
[root@cache jdk1.6]# tar zxvf jdk1.6.tar.gz
[root@cache jdk1.6]# cd jdk1.6
[root@cache jdk1.6]# cp -rp jre/ /usr/local/
vi /etc/profile
加入如下3條
JAVA_HOME=/usr/local/jre/
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME
export PATH
export CLASSPATH
source /etc/profile
測試java是否安裝成功
[root@cache jre]# java -version
-bash: /usr/local/jre//bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
1、在64系統里執行32位程序如果出現/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory,安裝下glic即可
yum install glibc.i686
2、error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
yum install zlib.i686
然后就成功安裝了java環境了
9.文件訪問時間
在Linux中,沒有文件創建時間的概念。只有文件的訪問時間、修改時間、狀態改變 時間。也就是說不能知道文件的創建時間。但如果文件創建后就沒有修改過,修改時間=創建時間;如果文件創建后,狀態就沒有改變過,那么狀態改變時間=創建 時間;如果文件創建后,沒有被讀取過,那么訪問時間=創建時間,這個基本不太可能。
與文件相關的幾個時間:
1、訪問時間,讀一次這個文件的內容,這個時間就會更新。比如對這個文件使用more命令。ls、stat命令都不會修改文件的訪問時間。
2、修改時間,對文件內容修改一次,3個時間都會更新。比如:vi后保存文件。ls -l列出的時間就是這個時間。但是通過echo a >>aa 這種方式修改文件,卻不會修改訪問時間,因為沒有訪問,就是沒有看過文件內容。
3、狀態改變時間。通過chmod命令更改一次文件屬性,這個時間就會更新。查看文件的詳細的狀態、准確的修改時間等,可以通過stat命令 文件名。
stat temp.c
8.關閉tty
CentOS 6.* 開始 TTY 的配置由 /etc/inittab 更改為 /etc/init/start-ttys.conf,執行以下命令可將默認6個 TTY 改為2個:
找到 tty [1-6] 改成 tty [1-2]:
然后,打開/etc/sysconfig/init文件,找到:
ACTIVE_CONSOLES=/dev/tty[1-6]
修改為:
ACTIVE_CONSOLES=/dev/tty[1-2]
重啟生效。
[root@localhost ~]# ps aux|grep tty|grep -v grep
root 1139 0.0 0.1 4064 580 tty1 Ss+ 09:52 0:00 /sbin/mingetty /dev/tty1
root 1141 0.0 0.1 4064 580 tty2 Ss+ 09:52 0:00 /sbin/mingetty /dev/tty2
6.關閉ipv6
在Linux下確認IPv6是否已經被啟用,可以從三個方面確定。
1.使用ifconfig查看自己的IP地址是否含有IPv6地址。
2.查看服務監聽的IP中是否有IPv6格式的地址。(netstat -tuln)
3.使用lsmod查看ipv6的模塊是否被加載。
關閉IPV6
第一種方法
使用vi編輯器,打開/etc/modprobe.conf,在文檔中末尾加入如下的兩條:
alias net-pf-10 off
alias ipv6 off
sed -i '$a\alias net-pf-10 off \nalias ipv6 off' /etc/modprobe.d/dist.conf
然后重啟電腦
Centos 6 關閉ipv6 在 /etc/modprobe.d/dist.conf增加如下內容
alias net-pf-10 off
alias ipv6 off
此步可以禁止ipv6,但重啟網絡會提示報錯FATAL: Module off not found.
解決方法如下:
1. alias ipv6 off 替換成 options ipv6 disable=1
下面這一步在cs6.5-64-minimal下好像沒有用,不用這一步也可以
2. /etc/sysconfig/network 新增如下一行
NETWORKING_IPV6=off
3. 關閉iptables的ipv6
ip -6 addr show ip -4 addr show 第二種方法 vi /etc/modprobe.d/disable-ipv6.conf(名字隨便起)(RHEL6.0之后沒有了/etc/modprobe.conf這個文件) 輸入:install ipv6 /bin/true [root@manager ~]# cd /etc/modprobe.d/ [root@manager modprobe.d]# cat ipv6.conf install ipv6 /bin/true
或者直接在dist.conf最后一行加入上面這行
在cs6.5-64-minimal下好像沒有用,不用下面這個也可以 vi /etc/sysconfig/network在最后增加一句:IPV6INIT=no [root@manager ~]# cat /etc/sysconfig/network NETWORKING=yes IPV6INIT=no
保存退出,並且重新啟動系統。
重啟之后可以使用上面的三種方法去驗證IPv6支持是否已經被關閉。
開啟IPV6
IPv6是默認支持的,所以當你要重新開起IPv6支持時,將/etc/modprobe.conf中的兩條指令注釋掉就可以了。centos 6.5min-64下是/etc/modprobe.d/dist.conf中修改
不過並不能使得其它程序默認不開啟對ipv6的支持
注意:禁用IPV6后,可能會導致某些服務無法啟動,比如VSFTP,對於VSFTP,需要修改/etc/vsftpd/vsftpd.conf文件中的listen和listen_ipv6兩個選項:
listen=YES
listen_ipv6=NO
lsmod |grep ip
ip6_tables 50177 0
service ip6tables stop
Unloading ip6tables modules: [ OK ]
然后在lsmod|grep ip中見不到ip6了
chkconfig ip6tables --level 35 off
關閉了ipv6 重啟也不會再開了
5.linux 輸入法
fcitx和scim是目前比較好的輸入法, 但是他們的特點不同,fcitx只能輸入中文,而scim可以根據需要,利用不同的碼表達到中英日…等等各種語言的輸入問題。如果你只懂中文,或者只會輸 入英文&中文,那么fcitx是一個不錯的選擇,因為它漂亮,小巧,實用。如果你還需要輸入日文或者其他語言,那么你因該安裝scim。通 過合理的配置,他能夠讓你像在windows里面一樣,想輸入什么語言就能輸入什么語言,同一種語言想用什么輸入法就用什么輸入法。Scim的擴充性很 強,而且比較穩定,我就是選擇的是scim.
安裝一個新輸入法前需要哪些准備?
如果你選擇fcitx或者scim,那么我建議你刪除系統自帶的中文輸入法。方法如下:
rpm –qa | grep iiimf | xargs rpm –e
rpm –qa | grep Chinput| xargs rpm –e
如果有哪一行提示rpm: no packages given for erase那表示本身你的系統里面沒有該輸入法,不用擔心,繼續往下看就行了。
大家都知道,linux下面比較常用的有兩個桌面系統,gnome和kde,這都無所謂,他們其實都是架在X系統之上的。簡單的說X系統就是一個最核心,也是最底層的桌面系統,gnome也好,kde也罷,或者其他的什么fvwm之類的,都只不過是X系統和用戶之間的另一層軟件而已。所以要想達到不管使用什 么桌面系統,都能調入輸入法,就是要在X系統啟動的時候,讓輸入法也啟動起來,那么這樣之后,無論你使用的是gnome還是kde或者其他什么桌面,都能 夠調入輸入法。因為當輪到他們啟動的時候,X系統已經啟動好了,輸入法已經被系統調入了。那么X系統又是如何啟動的呢?讓我們從startx開始說起。
無論你用什么桌面系統,都是通過startx啟動的,那么startx究竟是什么呢?一個應用程序還是一個腳本文件?為什么它能夠啟動各種桌面系統,並且能夠按照相應的配置文件來設置呢?帶着疑問,我在console里面輸入whereis startx.
在 找到了存放startx的路徑以后,用編輯器打開它發現原來是一個腳本文件。這個腳本文件的內容可能根據發行版不同,會有差異,如果你懂一些shell的 語言,那么你可以嘗試看看,不一定要全部看懂,但是你大致看過以后會發現最后有一個xinit的命令,然后跟着一些參數。我嘗試在console下面輸入 xinit(注意,不要在圖形界面下做此操作)
發現圖形界面啟動拉,但是很丑陋,什么功能都沒有,鼠標可以動,還有一個可以輸入命令的小窗口。怎 么退出來?ctrl+alt+backspace. 原來如此,startx只是一個腳本,里面通過對一系列配置文件的分析設置,最終利用xinit命令啟動圖形界面。不管是kde還是gnome,都是在這 個腳本中完成的。那么讓我們再打開startx腳本看看里面還做了些什么。你仔細看看,會發現有一個東西很顯眼,就是/etc/X11/xinit /xinitrc,這個xinitrc好像很眼熟,在配置輸入法的其他貼中總是看到,這里出現了肯定是里面運行了這個腳本。再看其他的一些東西,其實都是利用shell配置出一個xinit啟動的參數,用來配置桌面系統用的,不用管它。目前已知的就是startx的時候它會去執行一個/etc/X11 /xinit/xinitrc的腳本,讓我們打開來看看里面有什么。
打開一看,其中一段我覺得最有價值,是一個for循環,他依次執行了/etc /X11/xinit/xinitrc.d/下面的所有腳本。你可以耐心的找一下,一定可以發現。那么這個目錄里面有些什么內容呢?有一個文件看名字就知道和輸入相關,他叫xinput。等等,讓我們理一下,是怎么從startx到xinput的。
首先是執行startx這個腳本文件,里面他會執行xinitrc這個腳本,然后xinitrc腳本里面的,叫xinput。OK, 我們繼續,打開xinput看看。
4.linux下文件及目錄排序問題
1.默認ls按照文件名排序,先大寫再小寫
2.按大小排序
du -ab --max-depth=1|sort -n 以字節從小到大排序查詢當前目錄下的子目錄與文件
3.按時間排序
ls -alt # 按修改時間排序
ls -alrt # 按修改時間反向排序
首先,ls --help查看ls相關的與時間排序相關的參數:
> ls --help|grep -E "time|sort"
如果不指定 -cftuSUX 或 --sort 任何一個選項,則根據字母大小排序。
-c 配合 -lt:根據 ctime 排序及顯示 ctime (文件
配合 -l:顯示 ctime 但根據名稱排序
否則:根據 ctime 排序
-f do not sort, enable -aU, disable -lst
--full-time like -l --time-style=full-iso
-r, --reverse reverse order while sorting
-S sort by file size
--sort=WORD extension -X, none -U, size -S, time -t,
version -v, status -c, time -t, atime -u,
--time=WORD with -l, show time as WORD instead of modification
time: atime, access, use, ctime or status; use
specified time as sort key if --sort=time
--time-style=STYLE with -l, show times using style STYLE:
-t sort by modification time
可以看到-c按創建時間ctime排序,-t按修改時間mtime排序,默認都是將最近的文件排在前面,
-r可以實現逆序排序,即將最近的文件排在后面,--sort=WORD可訂制排序鍵值。
常用組合如下:
> ls -alt # 按修改時間排序
> ls --sort=time -la # 等價於> ls -alt
> ls -alc # 按創建時間排序
> ls -alu # 按訪問時間排序
# 以上均可使用-r實現逆序排序
> ls -alrt # 按修改時間排序
> ls --sort=time -lra # 等價於> ls -alrt
> ls -alrc # 按創建時間排序
> ls -alru # 按訪問時間排序
# 也可以查找指定類型的文件,然后指定按時間排序
> find . -name *.php|xargs ls -alt
3.Linux下which、whereis、locate、find 命令的區別
which是通過 PATH環境變量到該路徑內查找可執行文件,所以基本的功能是尋找可執行文件
[root@localhost /]# whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
將和ls文件相關的文件都查找出來,或者只找二進制(-b選項),源碼(-s選項)等
whereis查找的速度非常快,這是因為linux系統會將系統內的所有文件都記錄在一個數據庫文件中,當使用whereis和下面即將介紹的locate時,會從數據庫中查找數據,而不是像find命令那樣,通過遍歷整個文件系統來查找,效率自然會很高。但該數據庫並不實時更新,是定期的
locate查找包含特定模式的路徑名
[root@localhost mlocate]# locate --statistics
Database /var/lib/mlocate/mlocate.db:
3,379 directories
28,041 files
1,308,211 bytes in file names
564,520 bytes used to store database
locate命令其實是“find -name”的另一種寫法,但是要比后者快得多,原因在於它不搜索具體目錄,而是搜索一個數據庫(/var/lib/locatedb),這個數據庫中含 有本地所有文件信息。Linux系統自動創建這個數據庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可 以在使用locate之前,先使用updatedb命令,手動更新數據庫。
type命令其實不能算查找命令,它是用來區分某個命令到底是由shell自帶的,還是由shell外部的獨立二進制文件提供的。如果一個命令是外部命令,那么使用-p參數,會顯示該命令的路徑,相當於which命令。
find遍歷整個文件系統來查找
2./dev/shm
Linux默認(CentOS)/dev/shm分區的大小是系統物理內存的50%, 雖說使用/dev/shm對文件操作的效率會高很多,
但是目前各發行軟件中卻很少有使用它的(除了前面提到的Oracle), 可以通過ls /dev/shm查看下面是否有文件, 如果沒有就說明當前系統並沒有使用該設備.
1.Error, some other host already uses address
事件:
今天幫客戶重裝完系統后,剛開始網絡是正常的,IP是在安裝的過程中配置好。但修改ifcfg-eth0文件后重啟網絡服務時,就出現"Error, some other host already uses address"的報錯,並且網絡不通。嘗試過多種方法,包括重新安裝系統,最終問題還是一樣。
解決方法如下:
vi /etc/sysconfig/network-scripts/ifup-eth
注解掉下面的幾行內容,然后再執行service network restart
#if ! /sbin/arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${IPADDR} ; then
# echo {1}quot;Error, some other host already uses address ${IPADDR}."
# exit 1
#fi
一般的Linux發行版默認的終端都是16色的,但事實上幾乎所有的終端都支持256色終端。只需要把環境變量TERM設 為xterm-256color(xterm算是終端模擬器的一個標准,Gnome Terminal用gnome-256color,Konsole可以用konsole-256color)。