海运的博客

Awk的内置变量

发布时间:May 6, 2012 // 分类:Shell // No Comments

awk常用内置变量:

FS 输入分隔符,等同于-F
OFS 输出分隔符
NF 列数
FNR 输入文件的记录数
NR 行数
RS 输入记录分隔符
ORS 输出记录分隔符
FIRENAME 当前处理的文件名

Awk应用举例:

#https://www.haiyun.me
awk 'BEGIN {num=5} {FS=":"} $3>num {OFS="-";print NF,NR,FNR "\t" $1 "\t" $2 "\t" $3 "\t" $NF} END{print FILENAME}' /etc/passwd
7-13-13    games    x    12    /sbin/nologin
7-14-14    gopher    x    13    /sbin/nologin
7-15-15    ftp    x    14    /sbin/nologin
7-16-16    nobody    x    99    /sbin/nologin
7-17-17    nscd    x    28    /sbin/nologin
7-18-18    vcsa    x    69    /sbin/nologin
7-19-19    pcap    x    77    /sbin/nologin

Nginx/Lnmp定时分割日志shell脚本

发布时间:May 5, 2012 // 分类:日记分析 // No Comments

如果服务器访问量较大,Nginx日志占用空间也是个很大的问题,也不可能每天都手工清除日志,久而久之硬盘空间。。。
此脚本用于每天定时切割日记,备份30天内的日志数据备查,并删除30前备份的数据。

#/bin/bash
#Create by https://www.haiyun.me
log_path="/home/wwwlogs"
mkdir -p $log_path/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")  
for logname in $(ls /home/wwwlogs/*.log |awk -F/ '{print $NF}')
do
         mv $log_path/$logname $log_path/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")/$logname
 done
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
find $log_path -type d -mtime +30 -exec rm {} \;

将此脚本添加到计划任务:

echo "30 1 * * * sh /path/file.sh" > /etc/cron.d/nginx
#每天凌晨1点30执行任务

修改PPPOE配置解决ADSL频繁掉线问题

发布时间:May 5, 2012 // 分类:OpenWrt // No Comments

使用迅雷下载的时候openwrt老是掉线,查看ppp日志:

May  5 07:02:05 OpenWrt daemon.info pppd[23813]: No response to 5 echo-requests
May  5 07:02:05 OpenWrt daemon.notice pppd[23813]: Serial link appears to be disconnected.
May  5 07:02:05 OpenWrt daemon.info pppd[23813]: Connect time 1089.9 minutes.
May  5 07:02:05 OpenWrt daemon.info pppd[23813]: Sent 335012468 bytes, received 1671352386 bytes.
May  5 07:02:06 OpenWrt user.notice root: stopping ntpclient
May  5 07:02:12 OpenWrt daemon.notice pppd[23813]: Connection terminated.
May  5 07:02:12 OpenWrt daemon.notice pppd[23813]: Modem hangup

PPPOE客户端会每隔10秒向服务器发送echo request确认在线,5次请求未回应就认为连线有问题并断开连接。
修改配置增加和ADSL服务器交互间隔:

vim /etc/ppp/options
lcp-echo-interval 30 #发送间隔秒
lcp-echo-failure 15 #15次未响应断开

Vim添加Nginx配置文件语法高亮

发布时间:May 4, 2012 // 分类:Vim // No Comments

mkdir -p ~/.vim/syntax/
wget -O ~/.vim/syntax/nginx.vim https://www.haiyun.me/usr/uploads/2012/05/2410071208.vim
echo "au BufRead,BufNewFile /usr/local/nginx/conf/* set ft=nginx" >> ~/.vimrc

效果图如下:
nginx配置.png

记录下自己的Vim配置文件

发布时间:May 4, 2012 // 分类:Vim // No Comments

WinodwsVim7.3Linux下也可用。

"插件管理器vundle设置
set nocompatible "与vi不一致
filetype off 
set rtp+=~/.vim/bundle/vundle/ "载入特定目录插件
call vundle#rc()
"plugin
Bundle 'gmarik/vundle'
Bundle 'snipMate'
Bundle 'The-NERD-tree'
Bundle 'bufexplorer.zip'
Bundle 'neocomplcache'
Bundle 'winmanager'
Bundle 'taglist.vim'
"Bundle 'minibufexpl.vim'
Bundle 'FencView.vim'
Bundle 'grep.vim'
Bundle 'ZenCoding.vim'
"indent
Bundle 'php.vim-html-enhanced'
Bundle 'foxconndmd/vim-colors-xterm'
Bundle 'blackdust.vim'
Bundle 'darkburn'
Bundle 'freya'
Bundle 'Lucius'

"基本设置
"cd $HOME "设置工作目录
set helplang=cn "中文帮助
"au bufwritepost .vimrc source % "自动加载修改的配置文件
set fileencodings=utf-8,gb2312,gbk,gb18030,ucs-bom,cp936,big5,euc-jp,euc-kr,latin1 "自动选择编码
set ambiwidth=double "阻止特殊符号无法显示
set termencoding=utf-8
set encoding=utf-8  "设置当前默认编码
set langmenu=zh_CN.UTF-8 " 设置中文菜单及编码
language message zh_CN.UTF-8  "使用中文提示信息
set history=1000  "记录历史文件数”
set confirm "在处理未保存或只读文件的时候,弹出确认
set autoread "自动加载修改的文件

  "界面设置
set cmdheight=1 "命令栏高度
"set number   "显示行号
set laststatus=2 "总是显示状态行
"状态行的显示内容:文件路径、编码、时间、类型
set statusline=%F%m%r%h%w\ [Code=%{&encoding}\ [Format=%{&fileformat}]\ [Type=%Y]\ [Line=%l\ Of\ %L][Column=%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
set wildmenu  "在命令模式下使用 Tab 自动补全的时候, 将补全内容使用一个漂亮的单行菜单形式显示出来。
"set completeopt=longest,menu "关闭自动补全预览窗口
syntax enable  "语法高亮
set t_Co=256
set shortmess=atI  "不显示乌干达儿童
set showcmd  "在状态栏显示目前所执行的指令,未完成的指令片段亦
set novisualbell  "不要闪烁

"图形界面配置"
if  (has("gui_running"))
    au  GUIEnter * simalt ~x "启动最大化
    set mouse=a "鼠标支持"
    set clipboard+=unnamed "与windows共享剪贴板
    set mousemodel=popup  "右键菜单
    set guifont=Microsoft_YaHei_Mono:h12:cANSI
    set gfw=Microsoft_YaHei_Mono:h12:cGB2312
    set guioptions-=m " 隐藏菜单栏
    set guioptions-=T " 隐藏工具栏
    "set guioptions-=r " 隐藏右侧滚动条
    set guioptions+=b
    colo desert
else
"字符界面配置
    colo desert-xterm
endif

 "文本编辑设置
set nobackup "修改文件无备份"
set backspace=2 " 设置退格键可用 
filetype plugin indent on " 侦测文件类型
"set showmatch   " 插入括号时,短暂地跳转到匹配的对应括号
"set matchtime=2 " 短暂跳转到匹配括号的时间
set magic " 显示括号配对情况
set expandtab "编辑时将所有 Tab 替换为空格 
set softtabstop=4    "设置tab键为4个空格"
set shiftwidth=4  "缩进空格数
set smarttab "一次删除4个空格
au FileType html,python,vim,javascript setl shiftwidth=2 "特定类型文件缩进空格
au FileType html,python,vim,javascript setl tabstop=2
"set spell "打开拼写检查
set vb t_vb=  "设置去掉响声"
"set paste "设置粘贴模式,代码不错位
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif "记住上次的位置 

  "搜索设置"
"set nohls  "关闭高亮显示 
set hls  "高亮显示匹配内容
set incsearch "搜索时,输入的词句的逐字符高亮
set cursorline "高亮显示当前行"
set whichwrap=b,s,h,l,<,>,[,]  "光标左右循环移动“

  "断行设置
"set wrap           " 自动换行
"set nowrap         " 不自动换行
set linebreak       " 整词换行
"set tw=78  "超过78个字符自动断行
set lbr  "不在单词之间断行
set fo+=mB  "打开断行模块对亚洲语言支持。 m 表示允许在两个汉字之间断行, 即使汉字之间没有出现空格。 B 表示
" 两行合并为一行的时候, 汉字与汉字之间不要补空格。

  "设置自动对起折叠
set autoindent "" 自动对齐,继承前一行的缩进方式,特别适用于多行注释
set smartindent "开启新行时使用智能自动缩进
set cindent   "c风格程序缩进
"set foldopen=all  "光标遇到折叠,折叠就打开
"set foldclose=all "移开折叠时自动关闭折叠
"set foldenable    "开始折叠
"set foldmethod=syntax " 设置语法折叠
"set foldcolumn=0      " 设置折叠区域的宽度
"setlocal foldlevel=1  " 设置折叠层数

" C的编译和运行
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc

" C++的编译和运行
map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc

 "启用 omni 补全.
au FileType php set omnifunc=phpcomplete#CompletePHP
au FileType css set omnifunc=csscomplete#CompleteCSS
au FileType html set omnifunc=htmlcomplete#CompleteTags
au FileType mysql set omnifunc=mysqlcomplete#CompleteMYSQL
au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
au FileType python setlocal omnifunc=pythoncomplete#Complete
au FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

 "自定义CSS补全"
au FileType css call AddCssList()
function AddCssList()
set dictionary-=$VIM/vimfiles/dict/csslist.txt
set complete-=k complete+=k
endfunction

 "检测PHP文件补全
au FileType php call PHPFuncList()
function PHPFuncList()
set dictionary-=$VIM/vimfiles/dict/php_funclist.txt
set complete-=k complete+=k
endfunction

" phpDocumentor for VIM
"inoremap  :call PhpDocSingle()
"nnoremap  :call PhpDocSingle()
"vnoremap  :call PhpDocRange()

"winmanager设置
let g:winManagerWindowLayout='FileExplorer,BufExplorer|TagList' "设置WM窗口内容,在文件管理下ctrl+n切换到BufExplorer
"let g:winManagerWidth = 30 "设置WM窗口宽度
nmap <c-w><c-f> :FirstExplorerWindow<cr> "切换到第一个窗口
nmap <c-w><c-b> :BottomExplorerWindow<cr> "切换到最后一个窗口
nmap wm :WMToggle<cr> "打开WM窗口 
nmap wf :NERDTreeToggle<cr> "打开文件管理器

"taglist设置
let Tlist_Ctags_Cmd = 'D:\Program Files\Ctags\ctags.exe'
set tags=tags;
set autochdir
"let Tlist_Show_One_File=1 "只显示当前文件Tag
"let Tlist_Exit_OnlyWindow=1 "如Tag为最后窗口退出
"let Tlist_Show_Menu=1 "Gvim下显示菜单
"let Tlist_Auto_Open=1  "自动打开taglist

"neocomplcache配置
let g:neocomplcache_enable_at_startup = 1 "启动neocomplcache
"let g:neocomplcache_enable_auto_select = 1 "自动选择第一个
let g:neocomplcache_enable_smart_case = 1 "大写字母区分大小写
let g:neocomplcache_enable_camel_case_completion = 1 "入大写字母时, 进行模糊搜索可能性词语  例如,当输入AE时会匹配ArgumentsException。
let g:neocomplcache_enable_underbar_completion = 1 " 启用下划线补全.进行模糊搜索匹配的词。例如,当输入'p_h'时会匹配'public_html'。默认值是 0
"inoremap <expr><Space>  pumvisible() ? "\<C-n>" : "\<Space>"  "定义补全选择快捷键
"let g:neocomplcache_min_syntax_length = 3 " 设定最小语法关键词长度.
"let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'

"supertab设置
"let g:SuperTabRetainCompletionType=1 "记住上次的补全方式,直到用其他的补全命令改变它
"let g:SuperTabDefaultCompletionType="<C-X><C-O>" "改变自动补全快捷键

"minibufexpl设置
let g:miniBufExplMapWindowNavVim = 1 "多窗口下ctrl加j/k/l/h/切换窗口
let g:miniBufExplMapWindowNavArrows = 1 "多窗口下ctrl加箭头切换窗口
"let g:miniBufExplMapCTabSwitchBufs = 1 "ctrl加Tab循环切换窗口
"let g:miniBufExplModSelTarget = 1
let g:miniBufExplForceSyntaxEnable = 1 
map <C-n> :bprev!<CR> "切换到下一个Buf
"map <C-b> :bprev!<CR> "切换到上一个Buf

"grep插件
"nnoremap <silent> <F3> :Grep<CR> "F3 Grep查找
nnoremap <silent> <F3> :Rgrep<CR>

"fencview.vim 插件设置
"let g:fencview_autodetect = 1 "开启自动识别编码
"let g:fencview_checklines = 10 "检查前后10行来判断编码

"模仿MS快捷键
vmap <C-c> "yy 
vmap <C-x> "yd
nmap <C-v> "yp
vmap <C-v> "yp
nmap <C-a> ggvG$
imap <C-s> <Esc>:wa<cr>i<Right>
nmap <C-s> :wa<cr>
inoremap <C-a> <esc>ggVG "插入模式下C-a全局选中
vmap <C-c> "+y "可视模式下对选中模块进行复制C-c或剪切C-x
vmap <C-x> "+x
"插入模式下C-v粘贴
inoremap <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>

"分割窗口快捷键
nmap wv <C-w>v   " 垂直分割当前窗口
nmap wc <C-w>c   " 关闭当前窗口
nmap ws <C-w>s   " 水平分割当前窗口

"一些不错的映射转换语法,如果在一个文件中混合了不同语言时有用
nmap <leader>1 :set filetype=xhtml<CR>  
nmap <leader>2 :set filetype=css<CR>  
nmap <leader>3 :set filetype=javascript<CR>  
nmap <leader>4 :set filetype=php<CR>  
let mapleader=',' "自定义leader键
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...