查看指定端口被哪个进程占用的情况
lsof -i:端口号 netstat -tunlp|grep 端口号
文本替换
sed -i 's/abc/ABC/g' ./*.log //搜索替换 sed -i 's/abc//g' ./*.log //替换成空串 sed '/root/d' //搜索并删除行 sed -n '/root/p' //打印包含模板的行 -n带行号
VI中替换
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于:g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于:g/vivian/s//sky/g)替换每一行中所有 vivian 为 sky
删除Docker未使用的image
# 先删除Docker已退出的容器container $ docker ps -a | grep Exit | awk '{print $1}' | xargs docker rm
# 删除images $ docker images -a | grep none | awk '{print $3}' | xargs docker rmi
find命令
find -type d -empty 查找空目录 find ./ -atime +7 查找7天前访问过的文件 还有-mtime -ctime find ./ -atime +7 | xargs rm -f 删除7天前访问过的文件 find -type d -empty | xargs rm -fr 删除空目录 find -user root 查找root用户的文件
GIT操作
签出远程分支到本地
git checkout -b develop origin/develop
查看远程分支状态
git remote show origin
删除本地跟踪的已不存在的远程分支
git remote prune origin
找出两个commit之间修改的文件列表
git diff b727664861d..ace377ae --name-only
git打增量包
git archive -o name.zip HEAD $( git diff b727664861d..ace377ae --name-only )
git找出某个commit修改的文件列表
git diff-tree -r --no-commit-id --name-only commit-id
#查看修改
git diff
#取消对文件的修改。还原到最近的版本,废弃本地做的修改。 git checkout -- <filename> #取消已经暂存的文件。即,撤销先前"git add"的操作 git reset HEAD <file>... #修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情况。 git commit --amend #回退所有内容到上一个版本 git reset HEAD^ #回退a.py这个文件的版本到上一个版本 git reset HEAD^ a.py #向前回退到第3个版本 git reset --soft HEAD~3 #将本地的状态回退到和远程的一样
git fetch origin develop
git reset --hard origin/develop
#回退到某个版本
git reset 057d
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
git revert HEAD
VI操作
在全部内容的行首添加//号注释 :% s/^////g 在全部内容的行首添加#号注释 :% s/^/#/g 在2~50行首添加//号注释 :2,50 s/^////g 在2~50行首删除//号 :2,50 s/^////g
centos手工安装vboxsf并挂载virtualbox共享windows文件夹
从VBoxLinuxAdditions.iso中提取出VBoxLinuxAdditions.run 放到虚拟机中执行 sh ./VBoxLinuxAdditions.run
查看有没有vboxsf模块
lsmod | grep vboxsf
如果没有结果返回,说明 vboxsf没有载入,执行
modprobe vboxsf
挂载共享文件夹
mkdir /hostdata
mount -t vboxsf winshare /hostdata
查看系统版本 centos 7 需要先安装
#yum install -y redhat-lsb
#lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.1.1503 (Core) Release: 7.1.1503 Codename: Core
查看Linux内核版本
uname -a cat /etc/redhat-release,这种方法只适合Redhat系的Linux
安装git 提示Require libcurl.so.3错误
yum install git --disablerepo=rpmforge
安装crond计划任务
yum install vixie-cron crontabs -y
安装php posix系列函数
yum -y install php-process
安装 sz rz 上传下载工具
yum install lrzsz
释放内存
sync && echo 1 > /proc/sys/vm/drop_caches # to free pagecache sync && echo 2 > /proc/sys/vm/drop_caches # to free dentries and inodes sync && echo 3 > /proc/sys/vm/drop_caches # to free pagecache, dentries and inodes
安装 phpize
yum install php-devel
crontab计划任务
crontab -e 每10秒 *:10 * * * * cmd 每1分钟 */1 * * * * cmd
mysql赋权限
grant all privileges on `dbname`.* to 'user'@'localhost' identified by 'password'; FLUSH PRIVILEGES;
mysql导入导出
导出一个库
mysqldump -uroot -p1234 dbname > file.sql
导出一个表
mysqldump -uroot -p1234 数据库名 表名 > /root/tb.sql
导出一个数据库结构
mysqldump -uroot -p1234 -d --add-drop-table 数据库名 > /root/struct.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
crontab自动备份mysql脚本
# /bin/bash
DB_NAME="***"
DB_USER="***"
DB_PASS="***"
BIN_DIR="/usr/local/mysql/bin"
BACK_DIR="/data/backup"
DATE="$DB_NAME-`date +'%Y%m%d-%H:%M:%S'`"
LogFile="$BACK_DIR"/dbbakup.log
DeleteFile="$BACK_DIR"/deleted.txt
BackNewFile=$DATE.sql
$BIN_DIR/mysqldump --opt --force -u$DB_USER -p$DB_PASS $DB_NAME > $BACK_DIR/$DATE.sql
echo -----------------------"$(date +"%y-%m-%d %H:%M:%S")"----------------------- >> $LogFile
echo createFile:"$BackNewFile" >> $LogFile
#删除7天前的备份文件
find "$BACK_DIR" -ctime +7 -type f -name "*.sql" -print > $DeleteFile
echo -e "delete files:" >> $LogFile
#循环删除匹配到的文件
cat $DeleteFile | while read LINE
do
rm -rf $LINE
echo $LINE >> $LogFile
done
echo "---------------------------------------------------------------" >> $LogFile
还原一个mysql库
方法一 mysql -u root -p dbname < file.sql
密码 方法二 mysql -u root -p 密码 use dbname; source /root/file.sql
mysql查看所有表状态
show table status from dbname;
查看单个表
show create table db_name.table_name
更改mysql表的存储引擎
alter table table_name engine = innodb;
MySQL还原root密码
修改my.ini [mysqld] skip-grant-tables 重启mysql服务 cd到mysql安装目录的bin目录下 $ mysql (这里不再验证权限 直接登录) $ use mysql $ UPDATE user SET password=PASSWORD("new password") WHERE user='root'; $ flush privileges; $ exit 去掉my.ini的skip-grant-tables 重启mysql服务 完成
硬盘空间
du -sh ./* | sort 查看当前目录下的子文件夹空间占用情况 -s 仅显示总计 -h 以k、m、g为单位 df -ah 查看硬盘文件系统空间占用情况 -a 显示所有文件系统 -h 以k、m、g为单位
CentOS注销其他登录
w 列出在线登录的用户 pkill注销其他用户的登录 pkill -kill -t pts/1
Shell不显示任何信息
shell中可能经常能看到:** > /dev/null 2>&1 命令的结果可以通过 > 的形式来定义输出 /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以" > /dev/null"等同于" 1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 那么本文标题的语句: 1 > /dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
mysql复制数据
insert into tttt(title,image,lang) select title,image,'fr' as lang from tttt where lang='en';
MySQL导出指定数据到CSV (v5.6)
/usr/local/mysql/bin/mysql -uroot -p -hlocalhost --port=3306 --default-character-set=utf8 dotdotbuy -e "select * from gp_goods_product where status = 1" > /tmp/mall_product.csv
Mac OS安装PECL
cd /usr/lib/php sudo php install-pear-nozlib.phar Edit: /etc/php.ini and find the line: ; include_path = ".:/php/includes" 修改为: include_path = ".:/usr/lib/php/pear" sudo pear channel-update pear.php.net sudo pecl channel-update pecl.php.net sudo pear upgrade-all
php.ini配置redis存储session
[PHP] extension=redis.so [Session] session.save_handler = redis
;默认存储在database 0
session.save_path = "tcp://127.0.0.1:6379"
;指定存储到database 1
session.save_path = "tcp://127.0.0.1:6379?database=1"
;存储到多个redis 分权重
session.save_path = "tcp://host1:6379?weight=1&database=2, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"
SCP文件传输
将本机文件复制到远程服务器上 scp /root/news.txt root@192.168.0.10:/var/www scp -P 2222 /root/news.txt root@192.168.0.10:/var/www 对拷文件夹 (包括文件夹本身) scp -r /home/www/tmp root@192.168.0.10:/home/www/scp 指定SSH端口 scp -r -P 2222 /home/www/tmp root@192.168.0.10:/home/www/scp
crontab 用不同的账号执行命令:修改 /etc/crontab
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
* * * * * daemon echo 'hello'