查看指定端口被哪一個進程佔用的狀況php
lsof -i:端口號 netstat -tunlp|grep 端口號
文本替換node
sed -i 's/abc/ABC/g' ./*.log //搜索替換 sed -i 's/abc//g' ./*.log //替換成空串 sed '/root/d' //搜索並刪除行 sed -n '/root/p' //打印包含模板的行 -n帶行號
VI中替換mysql
: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 git
刪除Docker未使用的imageredis
# 先刪除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命令sql
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操做docker
簽出遠程分支到本地shell
git checkout -b develop origin/develop 數據庫
查看遠程分支狀態windows
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'