linux base note(2)(Vim,man,soft-package-management,xinetd and some others)

vim 模式編輯器

 命令模式(缺省)
 插入模式
 末行模式(打":"進入)

命令模式:

0  首行
$  行尾
gg 第一行
G  最後一行
  /  查找
n  向下一個
N  向上一個
到某行 4G 第四行
yy 複製
dd 刪除
D  刪除從光標開始到行最後
dgg 從光標位置刪除到第一行
ygg 複製到第一行
ctrl+r redo
u      撤銷
ctrl+v 塊選擇
ctrl+p 自動補齊
 
替換:
:範圍 s/old/new/選項
:1,$  s/kernel/AAA/  只替換第一個
:1,$  s/kernel/AAA/g 全部
:,$                 從光標到當前行
:1,$ <=> %          第一行到最後一行
如果遇到"/home"等目錄
"/"換爲"#"

命令類型 type -a cd

vim ~/.vimrc
設置(個人)vim 永久設置
下面是我比較常用的vim配置
(因爲用c語言比較多,所以是針對c的語法寫的,
有部分是自己編出來的,因爲自己不專門搞這些,
有什麼疏漏還請見諒,指正)

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"set nu
set ai
set si
set ts=4
set sw=4
":inoremap ( ()<Esc>i
":inoremap ) <c-r>=ClosePair(')')<CR>
":inoremap { {}<Esc>i
":inoremap } <c-r>=ClosePair('}')<CR>
":inoremap [ []<Esc>i
":inoremap ] <c-r>=ClosePair(']')<CR>

function ClosePair(char)
if getline('.')[col('.')-1]==a:char
return "\<Right>"
else
return a:char
endif
endfunction
map <F5> <Esc>i/**/<Esc>hi
map <F6> <Esc>$A//
map <F7> <Esc>0i//<Esc>j
map <F8> <Esc>0xxj
:inoremap <F5> /* */<Esc>hi
:inoremap <F6> <Esc>$A//
:inoremap <F7> <Esc>0i//<Esc>j
:inoremap <F8> <Esc>0xxj
:vmap , dI#if 0<CR><CR>#endif<Esc>kpkk

"摺疊,自由複製等
runtime! debian.vim
if has("syntax")
syntax on
endif
set background=dark
set showcmd
set showmatch
set ignorecase
set smartcase
set incsearch
set autowrite
set hidden
set mouse=a
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif
set tabstop=4
set foldenable
set foldmethod=syntax
set foldcolumn=0
setlocal foldlevel=1
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
"set statusline=[%F]%y%r%m%*%=%l-%L,%c[%p%%]
set statusline=[%f]%=%l,%c[%p]
set laststatus=2

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

man
1:用戶命令
2:內核系統調用
3:庫函數
4:特殊文件和設備
5:文件格式和規範
6:遊戲
7:規範
8:系統管理程序

man
(1):按章節查詢
man 1 ls
man -a read 一個個看
(2)按關鍵字檢索
man -k passwd |grep '^passwd'
mkwhatis 創建數據庫
ls /usr/share/doc

/etc/passwd
username:x:UID:GID:描述:家目錄:shell類型
userdel 刪除組
useradd jack -u 0 -o
su - key 使用新的環境變量
su key 使用舊的環境變量
md5sum /etc/passwd md5求和
sha1sum /etc/passwd

head -2 /etc/shadow
文件 INODE 用戶 UID 用戶組GID 進程PID
主組: 一個用戶只有一個主組(私有組)
附加組: 公有組
useradd user
-u 指定uid
-c 添加描述
-d 指定家目錄
-g 主組
-G 附加組
-r 系統帳號
-s 指定shell
-e 到期時間
-M 不創建家目錄

vim ~/.bashrc 永久別名
source .bashrc(或. .bashrc) 文件馬上生效

id username 查看userid

cat /etc/shells 查看shell

usermod 修改用戶信息
-s /sbin/nologin user09
-u 修改用戶id
-e 修改到期時間
-L 鎖定
-U 解鎖
gpasswd -a user08 username
gpasswd -a user08 sale 添加用戶到組
cat /etc/group 查看組信息
類型 權限 屬主 屬組
userdel -r username 刪除用戶(及用戶的信息)
rwx r-- r-- alice hr file
屬主 屬組 其他組 屬主 屬組 文件

u g o a
修改文件的屬主,屬組
chown alice.hr file1
chown alice file1
chown .hr file1
只改屬組 chgrp hr hosts

chmod 修改文件權限
chmod u+x file 給用戶加對file的執行權限
chmod 777 file
文件所有權對刪除無關
u + r
g - w
o = x
a

chmod u+s /bin/cat cat+特殊權限(setuid)
特殊權限時任何人使用cat都會以文件的所有者身份執行

setgid 以屬組身份執行 必須是二進制可執行程序執行
chmod 4777(6777) /bin/cat
查看進程
ps
ps aux
軟件包管理:安裝 刪除 卸載

一.軟件包類型
rpm 紅帽子管理標準
tarball 源碼包(需編譯)
bin

二.
rpm rpm命令
yum
lftp 192.168.3.230

rpm套件 ntfs-3g-2011.4.12-5.el6.x86_64.rpm
包名:ntfs-3g
版本號:2011.4.12-5
發佈版本號:el6.x86_64
uname -r 版本
uname -m 適合系統
cat /etc/issue 看Linux發佈版本
rpm -ivh 安裝
rpm -q 查詢
rpm -qa |grep 'stard'
rpm -ql 包名 查看 包 裝了那些文件
rpm -qf /etc/passwd 看哪個包提供了passwd 這個文件
rpm -e ntfs-3g 刪除包安裝
mount RHEL5.iso /media/cd -o loop
umount 卸載
yum 可自動解決依賴關係
yum -y install dovecot
yum seach ntfs-3g 查看有沒這個包

1.mkdir /mnt/cdrom
2.mount Linux.iso /mnt/cdrom -o loop
3.cd /etc/yum.repos.d/
vim rhel5.repo(自己創建)
1.[Serve]
2.name=Serve
3.baseurl=file:///mnt/cdrom/Server
4.gpgcheck=0 不檢查簽名

yum clean all 清緩存
yum repolist 列出倉庫
yum -y install dovecot 安裝
本地包:
yum -y localinstall ntfs-3g --nogpgcheck
yum list tftp-server 相當於rpm -qa 查看安裝情況,安裝了顯示installed
未安裝顯示倉庫名
yum -y install mysql-server
yum -y remove mysql-server 移除安裝
yum grouplist 列出包組
yum groupinfo "Java Development" 查看包組信息
yum -y groupinstall "Java Development" 安裝包組
yum -y groupinstall "group1" "group2"安裝多個包組
yum provides */htpasswd 列出文件(安裝未安裝都可以)位置

du -sh /etc 查看文件大小

文件的打包和壓縮
rsync 遠程同步(拷貝)
rsync -va /etc/ 192.168.3.19:/tmp 將etc下的文件拷貝到3.19的tmp目錄下
rsync -va /etc                    將etc目錄拷貝到3.19的tmp目錄下
echo 3 >/proc/sys/vm/drop-caches 清理緩存
看花費時間 gzip 壓縮 -r 壓縮文件
先打包在壓縮 可以一起
壓縮工具 gzip bzip2 xz
打包
tar -czvf etc1.tar.gz /etc
gzip:打包調用gzip壓縮
tar -cjvf etc.tar.bz2 /etc
bzip2:打包調用bzip2壓縮
rhel5上
tar -cvf etc3.tar /etc
xz etc3.tar
rhel6上
tar -cJvf erc.tar.xz /etc
解包(不需要判斷包的類型)
tar -xf etc1.tar.gz(bz2,xz)
-c重定向
RHEL6:xz 打包 tar -cJf 1.tar.xz /etc
解包: tar -xf 1.tar.xz
網絡傳輸最好打包壓縮傳送


文件查找
which 查找命令 在PATH中找
whereis 找命令,手冊
任意文件
locate(和updatedb配合) 適合在夜間做
find 在硬盤上遍歷

find /etc -name "ifcfg-eth0"  在etc目錄下按文件名查找
find /etc -iname "ifcfg-eth0" 忽略大小寫
find /etc -size +5M(-5M,5M)   按文件大小查找
find /etc -size +3M -a -size -5M
find /etc -mtime +2           修改時間超過兩天
find /etc -user alice         屬主是alice用戶的
find /home -nouser            無屬主的文件
find /home -nogroup           無屬組的
find /dev -type f/d/l/b/c/p/s 按文件類型查找
find /dev -type s -o p -o     是或的關係
find /etc ! -user alice       不是alice用戶的文件
find . -perm 755 -ls          按權限查找按權限查找
find /bin -perm -4000         查看包含s權限的文件
-4000 -表示只要包含該權限即可 只要包含s權限 000表示後面權限不限
find /bin -perm 644 -exec cp -rf {} /tmp \;找到後處理
find /bin -perm 644 -ok cp -rf {} /tmp \; -ok表示詢問
把/etc文件目錄結構拷貝到/tmp
find /etc -type d -exec mkdir -p /tmp/{} \;
crond 計劃任務 每隔一分鐘檢查一次
tree /tmp/etc/
find /tmp/etc/ -type f
ps aux 查看當前進程
ps aux |grep crond
系統級
/etc/crontab
vim /etc/crontab
ls /var/spoll/corn/
tail /var/log/cron
分 時 日 月 周 命令
crontab -e         創建計劃任務
crontab -l         列出計劃任務
crontab -r         刪除計劃任務
vim ~/.bash_profile
EDITOR=vim
export PATH EDITOR
var/spool/mail/root
0 2 14 * 0 ls     每月14號2點整或每月的兩點整
*/5 * * * *       每隔五分鐘執行一次
service crond start/stop/restart
chkconfig crond on
sleep 5;ls 睡眠5秒鐘,執行
* * * * * date          >/dev/pts/2
* * * * * sleep 10;date >/dev/pts/2
* * * * * sleep 20;date >/dev/pts/2
* * * * * sleep 30;date >/dev/pts/2
* * * * * sleep 40;date >/dev/pts/2
* * * * * sleep 50;date >/dev/pts/2

網卡地址: MAC 物理地址
IP 邏輯地址
32bit IP:
mask:
48bit MAC 192.168.3.29/24
前24位爲網絡地址(三個字節)
hostname       查看主機名
ip addr        看物理地址
ethtool eth1   查看eth1的網絡狀態
mii -tool eth0 看網線連接狀態
BROADCAST,UP,LOWER_UP 已連接上
ifdown eth0    斷開eth0
ifup eth0      連接eth0
ip rount       本地路由表
可查看哪個網段
cat /etc/resolv.conf 看的DNS設置
nameserver 8.8.8.8   設置DNS爲8.8.8.8
hostname newhostname 設置新的主機名(臨時生效)
ip addr add dev eth0 5.5.5.5/24 給eth0添加一個臨時ip
ip addr              查看本機ip
ip addr del dev eth0 5.5.5.5/24 刪除該ip
ip rount add dev eth0 default via 192.168.3.100 增加一個默認網關

永久設置
vim /etc/sysconfig/network-scripts/ifcfg-eth0 設置IP等
vim /etc/resolv.conf 設置DNS
設置多個IP(永久)
cp ifcfg-eth0 ifcfg-eth0:1
vim eth0:1
DEVICE=eth0:1
其他的根據情況更改
setup 查看升級
如何管理服務 sshd tftp iptable(防火牆)
啓動,重啓,停止 開機運行
一:守護進程(獨立)
/etc/init.d/iptables stop
service iptables stop
/etc/init.d/crond stop
/etc/init.d/crond start 或 restart
ckkconfig iptables off
chkconfig crond on
chkconfig crond --list
run level 顯示開機運行級別
init 1 單用戶模式
0 關機
1 單用戶模式
2 多用戶模式(比級別三少了一個NFS服務)
3 多用戶模式
4 保留模式
5 圖形模式
6 重啓
重啓時修改按a 在後面加上1
/etc/init.d/crond status 查看狀態
chkconfig crond on
二:由xinetd(超級守護進程) 管理的進程(telnet,tftp,ftp,sshd)
/etc/init.d/xinetd restart
chkconfig xinetd on
/etc/xinetd.d/tftp
disable
service xinetd restart
netstat -tunlp |grep :69
u:udp t:tcp (超級守護進程加-tunlp)
chkconfig tftp on/off
vim /etc/rc.d/rc.local
vim /etc/rc.local 開機運行的命令放在這裏

sshd 22 tcp端口

netstat -tnlp |grep :22
ssh                  需要service iptables stop
chkconfig iptables off
ssh
[email protected]
ssh -X 192.168.3.119 可打開Xwindow 程序
oclock 打開時鐘
rsync -va /etc/ 192.168.3.119:/tmp
藉助ssh 傳文件
scp -r /etc /192.168.3.119:/tmp
tftp 是簡潔版的ftp ;ftp文件傳輸協議
軟件包:tftp-server tftp-client
搭建tftp服務器(由xinetd管理)
tftp共享目錄 rhel5 : /tftpboot/ rhel6 : /var/lib/tftpboot/
chkconfig tftp on
service xinetd restart
netstart -unlp |grep:69
tftp 192.168.3.230
ls
cd
get
quit
chmod 777 /tftpboot/
vim /etc/xinetd.d/tftp
server_args 加-c參數可支持上傳(put)
如果連接SSH慢
vim /etc/ssh/sshd_config
修改ssh服務器
搜DNS /DNS
x 刪除#
大D刪除yes(刪除從當前位置到行尾)
小a 在光標後插入 no
搜GCC APIAuthenication 修改爲no
/etc/init.d/sshd testart
ftp server
軟件包:vsftp
配置文件: /etc/vsftpd/vsftpd.conf
共享目錄: /var/ftp/
service vsftpd restart

client: ftp,lftp
連接 :ftp 192.168.3.230
lftp 192.168.3.230
ls
cd
lcd 本地 /tmp (設置下載路徑)
get 文件 下載文件
mirror 目錄 下載目錄
ftp可基於瀏覽器訪問
ftp://192.168.1.119

日誌:
日誌進程:syslog
配置文件:
RHEL5:/etc/init.d/syslog
RHEL6:rsyslog.conf
ps aux |grep "syslog"
/etc/init.d/syslog stop/start/restart
tail /var/log/secure 看尾部10行
tail -f /var/log/secure 動態的查看文件尾部
進程 syslogd 日誌子系統 (負責日誌處理)
/etc/syslog.conf 配置文件
1:給哪些設備記(設備)
2:怎麼記(級別)(記哪些)(程度)
3:記在哪兒(動作)
man 3 syslog 查看設備,級別,動作
其中搜索:facility (設備)
authpriv
mail -/var/log/maillog(-表示延遲)
level 級別

syslog只負責記錄系統日誌,其他的日誌自己記錄(如mysql等)
*.emerg 所有設備產生的緊急情況在所有終端顯示
指定設備寫日誌
logger -p authpriv.info
cron.emerg

C/S
日誌服務器:
192.168.3.230
auth priv.*
接受日誌的服務器配置:
配置文件:/etc/syslog/syslog
在SYSLOG_OPTIONS行加選項-r 不能加在中間,打開遠程日誌接收功能
netstart -tunlp |grep :514
ps aux |grep 'syslog'
客戶端配置:
vim /etc/syslog.conf
/var/log的一些文件:
xferlog ftp下載情況日誌
message 系統主日誌
secure  安全日誌
cron    計劃任務日誌
maillog 郵件日誌
yumlog  yum日誌
dmesg   系統啓動日誌
以下兩個是二進制文件,不能直接看
/var/log/wtmp 用戶登錄情況(w命令查看的就是該文件)只看登錄過的
/var/log/btmp (last查看最近用戶登錄情況)查看所有用戶登錄情況,
包括未登錄過的
audit 審計(記錄每個動作)(不是命令)
管道和重定向
(IPC)
進程間通訊
前一個管道的輸出作爲後一個管道的輸入
grep 行過濾工具
awk -F: '{print $7}' /etc/passwd |sort |uniq
-F指定分割符號
打印第7列
sort排序
uniq不顯示重複行
lsof -i :21            查看某個文件/端口被誰佔用
system-config-keyboard 設置鍵盤
chkconfig gssftp off
service xinetd restart
lsof -i TCP:21

awk
awk -F: '/^root/{print $7}' /etc/passwd |sort |uniq -c
-c統計
rpm -qa |grep '^vim'
yum list |grep 'tftp'
df     查看當前掛載情況
df -h 人性化顯示(按1024算空間) -H按1000算空間
echo $[500*1000]
echo $[2**3] 2的三次方
echo $((2**3))
默認的分割符爲空格,Tab
df -h |grep '/$' |awk '{print $5}' |awk -F% '{print $1}'
管道常見命令: grep awk sed sort uniq
vim -O /etc/hosts /etc/sysconfig/network 可編輯兩個文件
-O垂直編輯
-o水平編輯
ctrl + w w 在兩個文件切換
重定向
> >> 輸出重定向
< << 輸入重定向
date >date.txt
date >/dev/pts/3
>覆蓋 >>追加
/proc 虛假目錄 內存(內核)運行的程序狀態
0爲正確輸入    1爲正確輸出 2爲標準錯誤
1> 1>> 1爲默認
2> 2>> 錯誤輸出
&> &>> 混合輸出
>/var/spool/mail/root
三個特殊設備
/dev/zero   無限輸出0
/dev/null   無底洞填不滿
/dev/random 產生隨機數
dd if=/dev/zero of=/file1 bs=1M count=10
ls /home /llsfsdf 1>ls.txt 2>&1
ls /home /llsfsdf &>ls.txt
ls /home /llsfsdf &>/dev/null
dd if=/dev/zero of=file9 bs=1M count=4000
cat </etc/hosts
grep root </etc/passwd
mail -s "love you" key </etc/hosts
cat </etc/hosts >file8.txt
從/etc/hosts中獲取數據,輸出到file8.txt

uname -m 當前系統版本
uname -r 當前內核版本
uname -a 所有信息
free 查看內存 -m 以兆顯示

有使用交換分區不能說明內存已滿
Linux 儘量多的使用內存,將沒有運行的程序所佔內存移動到交換區
如果頻繁使用交換分區說明內存真的不足了
程序層面只能看到虛擬內存

used 包含buffer(緩衝) cached (緩存)

vmstat 查看虛存
vmstat 1 10 一秒鐘一次,顯示10次
uptime 查看CPU負載情況
13:4 7:34 up 5:16, 5user load average(平均負載 (個)):0.04, 0.06, 0.28

lscpu rhel6查看CPU情況
ls /proc/cpuinfo cpu信息
ls /proc/meminfo memary(內存) 信息
cat /proc/cpuinfo
vmstat
r 隊列長度
r b swpd
0 0 0
ps  靜態 進程快照
top 動態查看進程
wc  統計個數
ps aux |wc -l 統計進程個數
wc /etc/hosts 統計行,列.字符個數,name
TOP:
USER PID %CPU %MEM VSZ RSS TTY
用戶 進程號 CPU MEM 虛存 真實內存 在哪個終端(?表示不依賴終端)

STAT START
狀態 開始時間

TIME COMMAND
使用CPU時間 使用文件
STAT(狀態的種類)
D 不可中斷睡眠
R 正在隊列中或運行
S 正在睡眠
s 會話的頭
T 已停止
Z 殭屍進程
< 高優先級
N 低優先級
L 在內存中鎖定
l 多線程方式運行
top -d 1 1秒一次執行
top
按z彩色顯示
99.3%id 空閒
0~139 優先級,數字越小,優先級越高
0~99 RT實時進程
100-139其他<==>對應nice值 -20~19
top的排序 按CPU使用率 shift+P
SHR共享內存
TIME+ 累計使用CPU時間
按f 自定義top字段
按下相應的字母進行更改
shift+w 存爲配置文件
shift+< shift+> 翻動
pgrep ssh 查看進程號
kill -l 查看信號
kill PID 自行終止
kill -9 PID 強制殺死

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