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

来源:互联网 发布:返利机器人软件收费 编辑:程序博客网 时间:2024/05/22 04:28

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
root@192.168.3.119
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 强制杀死

原创粉丝点击