常用Linux命令、包括vi 、svn
/etc/init.d/network restart
//===========================================
更新脚本
cd /www/scripts
更新站点
./staging_deploy.sh -d web
更新resource
./staging_deploy.sh -r resource
./staging_deploy.sh -n webplus
//31上手动获包
cd /www/staging/svn/php
rm -rf
wget http://i.fx-func.com/svn/juxiang/php/webplus.tar.gz --user=connect --password=20110609
//===============
/usr/local/nginx/conf/vhosts.enabled
//sed修改文件
sed -e 查看
sed -i '/newbuddy/s/9072/9010/g' /www/wwwroot/website/system/config.php
==============================================
192.168.200.5 svn代码库
/home/www/jenkins/jobs/website-package-online/workspace/Application
cd /www/tar/Resource
/www/tar
svn st Resource/
svn ci Resource/ -m "manual"
cd Resource/
svn st pc/
pwd
svn revert -R /www/tar/Resource/pc
svn up
cd ..
svn st Resource/
svn ci -m "manual"
svn info Resource/
cd Resource/
svn info
SVN 基本操作
检出checkout(co)
svn co ${url}
更新update(up)
svn up
提交commit(ci)
svn ci -m " 修改xxx 问题"
查看当前目录最近5 次提交记录
svn log -l 5
查看当前工作拷贝信息
svn info
查看当前未提交的文件status(st)
svn st
这个命令输出每个添加、修改、删除过的目录和文件,前面的C 表示冲突,要特别注意。linux 下也可以用svn st | grep ^C 来查看冲突项。
查看当前修改内容
svn diff
撤销当前修改,覆盖为资源库最新版本
svn revert path/filename
递归撤销当前目录修改,覆盖为资源库最新版本。注意新加的文件不会被删除,这时也可以删除工作拷贝,重新checkout
svn revert . --recursive
合并
SVN merge
递归向版本增文件: svn add * --force
find GameSite/system/ -maxdepth 100 -name .svn
=============================
/etc/init.d/php-fpm restart
/etc/init.d/nginx reload | restart
scp /www/run/fdfsclient/picture.php root@10.10.208.83:/www/temp
find ./ -mtime 0:返回最近24小时内修改过的文件
find /home/user -cmin -60 文件夹下最近一个小时内修改过的文件
vi编辑器
:50,100s/new//gn 出现的次数
:%s/a/b/g 全部替换 或者 :s/a/b/ 如果不加/g则指替换第一行
或者用 : set nu
:10,20s/a/b/g 替换10--20行的a
ll | grep .php 列出都是php的文件
ll viso* 列出包含viso关键字的文件夹
ls [P-X]* -d 列出p到x开头的文件
:%s/\/images/http:\/\/static.kunlun.com\/web\/kl\/images/g全部替换
http://static.kunlun.com/web/sg/images/input_bg1.jpg
unzip test.zip
sudo -i 权限
rsync -aqC /data/app/www/cms1.kunlun.com/mf/* /data/app/www/www.mffy.renren.com/
cp -arf /data/app/www/www.mffy.renren.com/login.php /data/app/www/cms1.kunlun.com/mf/
/usr/sbin/nginx -t -c /data/app/conf/nginx.conf
常用命令
touch 生成空文件 /bin/touch
cd - 回到上次访问的目录
cd !$
cp -a 拷贝目录
cp -f强制拷贝
cp -p 拷贝保留原文件的日期
cat 不管文件多长一次都读取出来
统计出现的行数
cat xxx.txt |grep "xxx" |wc -l
如果统计出现的次数
awk '{s+=gsub(/目标字符串/,"&")}END{print s}' 目标文件名
awk '{s+=gsub(/w/,"&")}END{print s}' aa.txt
more 分屏读取文件 f或空格显示下一页 回车键显示下一行 q退出
less 分屏查看文件 pageup上一屏 pagedown 下一屏 home回到开头 end回到结尾
head -n查看文件的前n行
tail -n查看文件的最后n行
find ./ -name .metadata |xargs ls -lt //按时间查看文件
ln -s [源文件] [目标文件] 注意:源文件和目标文件一定要使用绝对路径,硬链接不能跨设备(df -T)
mkdir -p 建子目录 /a/b/c/d
whereis 显示系统命令和帮助手册的命令
find [搜索路径] [搜索关键字] [文件或目录] find /etc/ -name 'f*'
locate httpd.conf 整个文件搜索【updatedb重新更新索引文件,便于查到】
grep root passwd在文件里查找匹配的内容 grep -v "#" /etc/passwd 排除带#的行
压缩文件
只能压缩文件,不保留原文件
gzip GUN zip
gzip -1 file 表示快速压缩
gzip -9 file nine nice 最佳状态压缩
gunzip file.gz 解压缩
gzip -d file.gz
压缩 gzip route.php
解压 gunzip route.gz
压缩目录
tar 打包
tar -c 产生一个.tar文件
tar -v 观看压缩过程
tar -f 指定压缩后的文件名
tar cvf 可以省略- tar cvf testdir.tar testdir
tar xvf 解压缩
解压到指定目录 tar zxf testdir.tar.gz -C web
tar zcvf 最佳压缩 tar zcvf testdir.tar.gz testdir[目录名]
tar zxvf 解压缩
tar -tf 查看打包的内容
通信命令
write 发送消息 write yuejide sfdsf
wall 给所有用户发消息 wall fdfdf
mesg y接受消息
mesg n屏蔽消息
mail 收信
h查看列表
r回信
q退出
mail 收件人 发信
init 0 关机
init 6 重启
shutdown -h now
reboot
导出 sz test.txt
导入 rz
Linux 网络命令
write 给用户发信息 ctrl+D 保存结束
write linzhilin
xiang he ni chifan ctrl+D 保存退出
ping 测试网络连通性
ping 192.168.0.1
ifconfig 查看和设置网卡信息
ifconfig eth0 192.168.0.2
mail 查看系统发送的文件
输入序列号直接查看
h 查看列表
d 序列号 删除邮件
q 退出
last 显示计算机所有用户登录的时间信息
lastlog 命令查看所有用户登录信息
last -u uid 查看某个用户登录信息
traceroute 显示数据包到主机间的路径
netstat 【选项】 显示网络相关信息
-t 查看TCP协议的信息
-u 查看UDP协议的信息
-l 监听
-r 路由
-n 显示IP地址和端口号
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接 netstat -an | grep -v "10.10.208.84" | grep ESTABLISHED 查看当前和本机连接的用户
netstat -rn 查看本机路由表
setup 配置网络、
mount 挂载
创建挂载点 mkdir /mnt/cdrom
mount /dev/src0[设备名称] /mnt/cdrom
umount /dev/src0 卸载挂载点
strace 跟踪进程的命令 strace -p 10747
#已易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详细显示每个子目录或文件的大小
du -sh [dirname|filename]
如:
当前目录的大小:
du -sh .
当前目录下个文件或目录的大小:
du -sh *
显示前10个占用空间最大的文件或目录:
du -s * | sort -nr | head
vi编辑
i a o
ctrl+f 下一页
ctrl+b 上一页
ctrl+d 下一屏
ctrl+u 上一屏
G 最后一行
gg 第一行
i 光标所在处插入
I 光标定位到行首插入
a 光标所在的字符后插入
A 光标所在的行末尾插入
o 插入定位到下一行
O 插入定位到上一行
0 定位到某行的开头
$ 定位到某行的末尾
R 从光标所在处开始替换字符
n 向下查找
N 向上查找
:/1067,1060s/logs/PHP/g n1行---n2行全部替换
x向后删除
X向前删除
dd删除一行
ndd删除n行
dG删除光标所在行到最后一行的所有数据
d1G删除光标所在行到第一行的所有数据
d$删除光标所在行到该行的最后一个字符
d0删除光标所在行到该行的最前面一个字符
p复制光标所在的向下n列
P复制光标所在的向上N列
u撤销操作
:r /etc/issue 导入到光标所在的位置 :r +文件名
:r !date 导入命令结果到当前文件
:map 快捷键 触发命令
:map ^P(ctrl+v+p) I#<ESC>
:map ^B 0x
:map ^M yuejide@163.com<ESC>
注释多行
:4,8s/^/#/g
取消注释
:4,8s/^#//g
:4,8s/^/\/\//g
:ab mymail yuejide@163.com 只要输入mymail则就显示邮箱地址
创建保存快捷vim命令
vi /root/.vimrc root用户
vi /home/yuejide/.vimrc 普通用户
set nu
map ^P I#<ESC>
一次性安排计划任务命令 at
某个时间点执行某个程序(命令),一定要使用命令的全路径
at 17:40
>/bin/cp /www/test/* /www/xsphp/
ctrl+d退出
at -l或者atq 查看任务执行情况
at -d 或者atrm 任务号
at 17:30 月/日/年
at -f 文件 时间点
at < one.txt 时间点
at配置文件
/etc/at.allow 文件中列出的用户都能使用此命令
/etc/at.deny 文件中列出的用户都不能使用此命令
两个文件都不存在,只有root用户才能使用此命令,都存在且都为空则所有用户都能使用此命令
周期性安排计划任务crontab
service crond status //查看状态
ps aux | grep crond
启动 /sbin/service crond start
停止 /sbin/service crond stop
* * * * * /www/test/btest.sh
分 时 日 月 周
crontab -l 列表
crontab -e 编辑
crontab -r 删除
/etc/cron.allow 如果这个文件存在,文件中包含的用户名可以使用crontab。
/etc/cron.deny 如果这个文件存在,文件中包含的用户名不能使用crontab。
*/5 * * * * /usr/local/php/bin/php /www/faetest/yuejide/tt.php //5分钟往数据库添加下记录
查看进程
ps -el
ps -aux
S 休眠 D不可中断的休眠 R运行 Z僵死状态 T停止状态
杀死进程
killall httpd 杀死所有和httpd相关的进程
kill 进程号
kill -9 杀死僵死进程
日期 date +%Y-%m-%d
Linux用户
1、超级用户root 具有操作系统的一切权限uid为0
2、普通用户 具有操作系统有限的权限 uid 500 -- 6000
3、伪用户 是为了方便系统管理,满足相应的系统进程文件属主的要求,不能登录 uid 1 -- 499
passwd /etc/passwd 通过这个文件管理用户,只定义账号不定义口令
账号名称:root
用户密码:x
用户标识(用户ID):0
用户标识(用户组ID):0
用户相关信息:root
用户家目录:用户自己的目录
用户环境:/bin/bash
useradd 创建用户
-u -g -G -d -s -c -e -k -m -M -r
userdel 删除用户
tail -5 /etc/passwd 用户信息
tail -5 /etc/shadow 密码
-r 删除用户家目录及所有信息
更改用户名
usermod -l thisueser myuser
usermode -L thisuser 锁定用户
usermode -U thisuser 解锁用户
passwd -l
passwd -u
passwd -s 解锁
Linux用户组
/etc/group
1、组名
2、组口令
3、GID
4、组内用户列表(属于该组的所有用户名表)
useradd -g mygroup myuser1 添加用户到所属组
userdel -r myuser1 删除用户
groupadd 添加
groupmod 修改
groupdel 删除
gpasswd -a redhat newgroup 修改用户所属组
gpasswd -d redhat newgroup 删除所属用户组
id 查看一个用户的uid和gid
id[选项] 用户名
id -g yuejide
id -G yuejide
finger 查看用户的相关信息,包括的用户的组目录启动shell
finger yuejide
chmod -R 权限 文件
chown 改变文件或者目录的所有人
chown -R 包括子目录
chown -R www:www /www/run 同时修改所有者和所属组
chgrp 改变文件或者目录的所属组
find views/ -maxdepth 100 -type d -name .svn | xargs chown -R www:www
find / -iname *?//不区分大小写,精准搜索用?
find / -size +204800 大于100M的文件
find / -size -204800 小于100M的文件
find /home -user www//根据所有者来查找
find /home -group www//所属组
find /home -cmin -5 5分钟内修改过属性的文件和目录
-amin//访问过的
-cmin//改变属性
-mmin//修改内容
-type d目录
f文件
find /etc -name initab -exec ls -l {} \;查到后把文件属性列出来
查找目录下的所有文件中是否含有某个字符串
find .|xargs grep -ri "IBM"
查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l
shell编程
查看历史指令 history列出所有 !99 执行第99条指令 !str 离最近的一条命令
history -c 清楚所有指令
输入输出 ls > test.txt 写入到test.txt文件中,输出重定向 >>追加输出重定向
多少行 ll | wc -l
set查看系统里所有变量 unset删除变量
env全局变量
export把局部变量变成全局变量
重启后不让环境变量失效
vi /etc/profile
运算
expr $aa \* $bb 乘法,中间必须要有空格
$# 命令中位置参数的个数
$* 所有位置参数的内容
$? 上一条命令执行后返回的状态,当前返回状态0时表示正常,非0值时表示异常或者出错
$$当前所在进程的进程号
$!后台运行的最后一个进程号
$0当前执行的进程/程序名
-d是否为目录文件directory
-e文件是否存在exist
-f是否为文件file
-r是否有读的权限read
-w是否有写的权限write
-x是否有执行权限excute
-L是否为符号连接文件Link
-eq:等于equal
-nq:不等于no equal
-gt:大于greater than
-lt:小于lesser than
-le:小于或等于lesser or equal
-ge:大于或等于greater or equal
字符串比较
= 字符串内容相同
!= 字符串内容不相同
-z 字符串内容为空
&&与
||或
!取反
语句
if ;then
elif ;then
else
fi
for 变量名 in 取值列表
do
命令序列
done
while[ true ]
do
命令序列
done
case $i in
start)
echo "start......"
;;
stop)
echo "stop......."
;;
restart)
echo "restart......"
;;
esac
rpm
rpm -qa|grep yum|xargs rpm -e --nodeps
rpm -e --nodeps卸载