linux及git记录

git撤销

Git Add了一个错误文件
git reset #撤销指定的文件
git reset #撤销所有的文件 只撤销commit操作,保留文件Git Commit了一个错误文件
git reset HEAD~1 撤销commit操作,删除变化
git reset --hard HEAD~1
删除本地和远程的test分支
git push origin --delete test
git checkout master
git branch -d test
git branch -D test 如果有未提交的文件

Redis 性能分析与优化

redis-cli -h  -p  -n  --bigkeys#得到的 value 占用空间最大的 key 值
slowlog 这个子命令可以获取当前的这些记录 127.0.0.1:6379> slowlog get 3

随机数

echo $RANDOM
od -An -N2 -i /dev/random

开源 OCR

bash > tesseract --list-langs
List of available languages (17):
math
chi
chi_sim
eng
tesseract paper.png paper -l chi_sim
tesseract input.png output -l eng

清空Github上某个文件的历史

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch app/img/*' --prune-empty --tag-name-filter cat -- --all

git push origin master --force

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

git gc --aggressive --prune=now

使用 iconv 对大文件编码转换 GB2312 - UTF8

iconv -f gb2312 -t utf-8//IGNORE av-ed2k-合集.data > 日语教学.txt
wc -l 日语教学.txt av-ed2k-合集.data

Nginx 上限制单 IP 单位时间的请求数,以及单 IP 的并发连接数

http {

limit_req_zone $binary_remote_addr zone=one:10m rate=8r/s;

server {
    location /search/ {
        limit_req zone=one burst=5;
    }

使用 Nginx 限制页面访问权限

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd myusername
server {
  listen       80;
  server_name  ip_address;

  location /backend {
      root   /var/www/sunzhongwei.com;
      index  index.html index.htm;

      auth_basic "Restricted";                                
      auth_basic_user_file /etc/nginx/.htpasswd;  
  }
}

sudo /etc/init.d/nginx reload

命令行登陆github

ssh-keygen -t rsa -C "邮件"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/MZero/.ssh/id_rsa):

登陆github。点击右上角的 Account Settings—>SSH and GPG keys —> new SSH key
$ ssh -T [email protected]
若有You’ve successfully authenticated提示,说明成功了

git pull/push项目的时候总是提示要输入用户名密码的解决方案

git config --global credential.helper store

服务器设置允许mysql远程登录

vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
grant all on aaa.* to "root"@xx.yy.zz.cc identified by "123";
flush privileges;
grant all on aaa.* to "root"@"%" identified by "123";

ssh 配置秘钥登录

ssh-keygen -t rsa -C "you@homestead"

$ sudo vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizeKeyFile ~/.ssh/authorized_keys
service sshd restart
将公钥文件的内容追加到 ~/.ssh/authorized_keys 文件中,并且将文件权限置成 600
chmod 600 ~/.ssh/authorized_keys

$ vim .bash_profile
alias c14='ssh [username]@[server_ip] (-i ~/.ssh/[私钥文件])'
$ source .bash_profile
$ c14

Nginx 报 502 的解决思路

nginx报错,查看nginx日志排错
nginx报502 bad gate way一般是因为没有配置好php-fpm
修改nginx或者php-fpm配置文件之后重启生效

nginx 添加 https 和 http2 模块支持

curl https://nginx.org/download/ng... |\
tar xzf - && cd nginx-* # get latest nginx & extract it
./configure [old_config_arguments] --with-http_ssl_module --with-http_v2_module # 前面 [old_config_arguments] 可以从 nginx -V 里 copy
make
sudo make install
listen 443 ssl http2;
ssl_certificate /home/brook/ssl/chained.pem;
ssl_certificate_key /home/brook/ssl/domain.key;
ssl_dhparam /home/brook/ssl/dhparams.pem;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+ 3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets on;
add_header Strict-Transport-Security max-age=31536000;
service reload nginx

pphpmyadmin 缺少 mcrypt 扩展

sudo apt-get install php-mcrypt libmcrypt libmcrypt-devel
sudo ln -s /etc/php5/mods-available/mcrypt.ini 20-mcrypt.ini
sudo service apache2 restart

curl命令查看请求响应时间方法

curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}"n" http://www.36nu.com

0.014::0.015::0.018::0.019::1516256.00

用github来展示你的前端页面

创建项目新建gh-pages分支 通过 http://(user_name|org_name).g... 访问
一种更加简便的方式来实现:将代码上传至仓库后在settings里配置下GitHub Pages为你想展示的分支就行了

pull request

git clone 自己fork的project
然后添加一个上游地址git remote add upstream
git remote -v查看自己和fork来的地址
git pull upstream master
增加分支 git checkout -b newbranch
git pull upstream master
再git rebase master将改动代码放在master前面
git push origin newbranch

linux及git记录_第1张图片

代理ip

curl http://ip.chinaz.com/getip.aspx -x 'http://120.52.72.56:80'
{ip:'120.52.72.56',address:'北京市 联通云 BGP 数据中心'}

git add 如何只 add 某一行

git add -p http://stackoverflow.com/ques...

判断linux是否被黑

执行命令ls -l /usr/bin/ps看一下文件时间是不是最近更改过;对比下相同操作系统版本下的ps命令和这台的大小,如果不同,基本可以确定被入侵了

格式化json

echo '{"a": 1, "c": 3, "b": 2}' | python -m json.tool
删除文件中的空行
cat a.txt | sed -e '/^$/d'
常用命令history 1 -1 | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
删除空文件/删除垃圾文件
find . -type f -size 0 -delete
find . -type f -name "a.out" -exec rm -rf {} ;

Git中的username的设置

git config --global user.name "spoock"
新的提交没有使用正确的name,很有可能是环境变量将username覆盖了

$ echo $GIT_COMMITTER_NAME
$ echo $GIT_AUTHOR_NAME

chrome中的cookie存储位置

地址栏中输入chrome://setings/password就可以查看浏览器上面保存的所有的密码了.
chrome还将这些cookie存在了本地的硬盘上面。目录在:
C:/Users/本地用户名/AppDate/Local/Google/Chrome/User Data/Default下的cookie文件。这个cookie文件是一个sqllite的文件

正向代理与反向代理

正向代理中proxy代理client来向一个server发起请求 而反向代理中proxy代理一个或者多个server接收clients的请求, server对于client来说是不可见的 代理:在客户这一端,替客户收发请求。
反向代理:在服务器机房这一端,替服务器收发请求,也就是说请求和响应都先经过反向代理。具有缓存、安全、负载均衡等作用。请求分发到多台服务器 正向代理代理客户端,反向代理代理服务器,一个是代理(v)客户端,为客户端收发请求,使真实客户端对服务器不可见。
一个是代理(v)服务器,为服务器收发请求,使真实服务器对客户端不可见。

Nginx配置中的 root 与 alias 指令的区别

location /i/ {

root /data/w3;

}
location /i/ {

alias /data/w3/;

}

linux及git记录_第2张图片

linux及git记录_第3张图片

alias 只能作用在location中,而root可以存在server、http和location中。

alias 后面必须要用 “/” 结束,否则会找不到文件,而 root 则对 ”/” 可有可无。

在当前目录下所有文件中搜索字符串“windows”,并用“linux”替换之

grep -rl 'windows' ./ | xargs sed -i 's/windows/linux/g'

查看某个端口打开的文件(socket 连接)

lsof -i :80

列出用户打开的文件

lsof -u root | more

文件被哪些进程打开了

lsof -a /var/lib/mysql/mysql/slow_log.CSV

Git push到多个远程库

git remote add origin [email protected]:looly/hutool.git
git remote add osc [email protected]:loolly/hutool.git
git add .
git commit -m 'First commit'
git push origin master
git push osc master

crontab的“坑”

crontab的命令里面增加source /path/to/configfile
python task.py >> ~/debug.log 2>&1 crontab命令加上这个后缀(2>&1) 之后,我的debug.log 之中终于出现如下图所示的错误信息(sh: l: java not found)

apt-get rpm

Linux发行版主要有两派,Debian系和Redhat系

Debian系使用deb包,包管理是:apt-get

Redhat系使用rpm包,包管理是:rpm
Debian/Ubuntu:
二进制包 .deb
安装方式 dpkg -i xxx.deb
apt-get install xxxxx.deb
Centos:
二进制包 .rpm
安装方式apt-get update sudo apt-get install rpm rpm -ivh xxx.rpm
yum install xxxxx.rpm

ffmpeg将视频转ts

ffmpeg -i Wildlife.wmv -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list ./m3u8/index.m3u8 -segment_time 10 ./m3u8/’%03d.ts’

你可能感兴趣的:(git,github,linux)