Linux經常使用命令

 

查看指定端口被哪一個進程佔用的狀況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'
相關文章
相關標籤/搜索