2017-1-3 创建
2017-11-05修改
2021-10-16更新
一、 git相关功能
1.常用功能
- 克隆本博客:git clone ssh://iamdsy@139.162.31.179:6500//blog/www.junzilou.com
- 从本地端修改后,同步到远端: git push -f origin master
- 查看commit-hash: git log
- 查看远端详细情况:git remote -v
- 打tag:git tag -a v1.0 -m "my version 1.0"
- push单个tag:git push origin v1.0
- push所有tags:git push origin --tags
- 删除tag:git tag -d v1.0
- 删除远端服务器tag:git push origin :refs/tags/v1.0
- 增加新分支:git checkout -b testbranch
- 将新分支推送到远端服务器:git push --set-upstream origin release
2.解决每次同步了必须登录到远端执行:git reset --hard的办法
- 进入.git的hooks,建立post-receive,具体代码如下(代码是抄的别人的):
#!/bin/sh #author: embbnux #Blog of Embbnux: http://www.embbnux.com #判断是不是远端仓库 IS_BARE=$(git rev-parse --is-bare-repository) if [ -z "$IS_BARE" ]; then echo >&2 "fatal: post-receive: IS_NOT_BARE" exit 1 fi unset GIT_DIR DeployPath="/var/web" cd $DeployPath echo "deploying the test web" #git pull origin master git fetch --all git reset --hard origin/master time=`date` echo "web server pull at webserver at time: $time." echo "================================================"
二、wget相关功能
- 使用代理下载:wget -e "http_proxy = 127.0.0.1:8080" "http://url_to_get"
三、dropbox
- 下载offline installer的dropbox网址:https://www.dropbox.com/downloading?type=full
四、踢掉已登录的其他ssh账户
- pkill -kill -t pts/1
- 其中的pts/1通过 w 命令可以查到
- who am i 命令查询当前登录账户情况
- ssh出错处理:用ssh -v去连有问题的服务器,这时会有比较详细的调试信息在屏幕上输出,可以帮助判断是哪一步出了问题。
五、gitblog的文档
- gitblog的官方网站经常就崩溃了,github有它的文档
https://github.com/jockchou/gitblogdoc/tree/master/posts/gitblog
六、ssh和scp常用命令
- 远程登录: ssh -p port username@host_ip
- 远程拷贝: scp -P port /home/administrator/news.txt root@192.168.6.129:/etc/squid
七、mailing lists
1.退订:
发送标题为unsubscribe,文件内容也为 unsubscribe的邮件给ding-request@gnus.org 或者fvwm-request@fvwm.org这种已经订阅的mailing
lists就可以了
八、文件命令
head file – 查看 file 的前 10 行
tail file – 查看 file 的后 10 行
tail -f file – 从后 10 行开始查看 file 的内容
九、grep搜索
grep pattern files – 搜索 files 中匹配 pattern 的内容
grep -i – 忽略大小写的搜索
grep -v – 反转搜索
grep -n – 增加行号
grep -r pattern dir – 递归搜索 dir 中匹配 pattern的内容
command | grep pattern – 搜索 command 输出中匹配 pattern 的内容
十、系统信息
date – 显示当前日期和时间
date +"%s" – 显示当前日期和时间距离1970-01-01
00:00:00(utc格式)的秒数
cal – 显示当月的日历
uptime – 显示系统从开机到现在所运行的时间
w – 显示登录的用户
whoami – 查看你的当前用户名
finger user – 显示 user 的相关信息
uname -a – 显示内核信息
cat /proc/cpuinfo – 查看 cpu 信息
cat /proc/meminfo – 查看内存信息
free – 显示内存及交换区占用情况
lunar -u – 查看当天农历
fc-list |grep 文 – 查看已安装的中文字体
lsb_release -a – 查询ubuntu版本号
ulimit -a – 查看系统限制
ipcs -l – 查看内核限制
十一、压缩
常用:
sudo tar czvfp file.tar.gz files/ --将files目录下的所有文件都压缩到file.tar.gz中,并且保留了文件属性、文件权限
sudo tar xvfz file.tar.gz 解压文件,保留了属性与权限,前提是系统中有对应的用户
sudo apt-get install p7zip-full
sudo 7z a -t7z -p hehe.7z hehe.jpg 提示输入密码,并将hehe.jpg压缩成hehe.7z文件
sudo 7z x hehe.7z 解压缩hehe.7z,会提示输入密码
不常用
tar cf file.tar files – 创建包含files的tar文件 file.tar
tar xvf file.tar – 从 file.tar 提取文件
tar czf file.tar.gz files – 使用 Gzip 压缩创建包含
files的file.tar.gz 文件
tar xvzf file.tar.gz – 使用 Gzip 提取 tar 文件
tar xvzf file.tgz – 使用 Gzip 提取 tar 文件
tar cjf file.tar.bz2 files – 使用 Bzip2 压缩创建包含
files的file.tar.bz2 文 件
tar xvfj file.tar.bz2 – 使用 Bzip2 提取 tar 文件
gzip file – 压缩 file 并重命名为 file.gz
gzip -d file.gz – 将 file.gz 解压缩为 file
unzip file.zip – 将 file.zip 解压缩为 file
unrar x file.rar – 将 file.rar 解压缩为 file
7zr x file.7z – 将 file.7z 解压缩为 file
十二、网络
whois domain – 获取 domain 的 whois 信息
dig domain – 获取 domain 的 DNS 信息
dig -x host – 逆向查询 host
wget -c file – 断点续传
route add default gw 192.168.1.1 – 添加默认路
由为192.168.1.1
route add -net 192.168.0.0 netmask
255.255.255.0 gw 172.16.0.1 – 添加一条路由
route -n – 查看路由信息
ubuntu 16.04 禁用ipv6
禁用前,输入sudo ifconfig -a | grep inet6,会返回结果
禁用:编辑/etc/sysctl.d/99-sysctl.conf 文件,粘贴如下三行:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
然后输入:sudo sysctl -p
禁用后:输入sudo ifconfig -a | grep inet6,没有结果
十三、安装
dpkg -i pkg.deb – 安装包 (Debian)
rpm -Uvh pkg.rpm – 安装包 (RPM)
apt-get update – 执行下面两个命令之前需执行这个
apt-get install wget – 安装wget
apt-cache search wget – 搜索wget相关软件
dpkg -S /usr/bin/convert – 查询/usr/bin/convert属于哪个软件包
如果上面这个命令返回:dpkg-query: no path found matching pattern /usr/bin/convert
可以试着改用:dpkg -S "$(readlink -f /usr/bin/convert)"
dpkg -L coreutils – 查询coreutils软件包有哪些文件
type lsmod - 得到结果lsmod is /sbin/lsmod(rpm)
rpm -qf /sbin/lsmod - 得到结果module-init-tools-3.2_pre8-7(rpm)
十四、自定义快捷键
win+d – 显示桌面
ctrl+left – 壁纸显示前一张(需安装variety)
ctrl+right – 壁纸显示前一张(需安装variety)
F12 – 调出guake
十五、内核及驱动模块
1.插入模块
- insmod 模块名称 向内核中插入一个驱动模块或者其他模块(该模块是目标代码,并没有被连接成可执行程序)
- modprobe 模块名称 modprobe和insmod一样,都是加载一个模块,但是modprobe要先检查内核看是否已经有了要添加的内核模块了,
而insmod却不做这个工作;但是modprobe只能加载标准文件夹中的驱动模块。
2.删除模块
rmmod 模块名称 - 从内核中卸载一个模块,但是如果该模块正在使用,或者内核被配置为不能进行模块卸载,
则该命令无效;但也可以把内核配置为可以进行模块强制性卸载。
3.查询内核中已经加载的模块
lsmod lsmod的实现是通过阅读/proc/modules文件的内容来实现的;这些信息也可以在/sys/module虚拟文件系统中查到。
十六、gcc使用
现在有三个文件main.c,reciprocal.cpp,reciprocal.hpp(见advanced-linux-program.pdf 30页)
gcc -c main.c 此处 -c选项告诉编译器将源文件编译成目标文件(以o结尾的文件,main.o);
g++ -c reciprocal.cpp 由于reciprocal.hpp和reciprocal.cpp 文件互相关联,而且reciprocal.hpp文件放在../include文件夹中,
因此此处编译会出错,用下面一个命令才不会出错;
g++ -c -I ../include reciprocal.cpp 此处-I选项告诉编译器除了标准的头文件搜索顺序以外(标准顺序包含当前文件夹),还
要搜索../include文件夹中的头文件,此处生成结果reciprocal.o;
g++ -c -D NDEBUG -I ../include reciprocal.cpp 此处-D NDEBUG选项是因为reciprocal.cpp文件中有一句assert (i != 0)
此句作用仅限于对某些执行情况进行判断,加上-D NDEBUG选项,就不编译此句了;
g++ -c - O2 -I ../include reciprocal.cpp 此处-O2选项作用在于编译时进行优化,使用了此选项以后调试更难;
g++ -o reciprocal main.o reciprocal.o 此处-o 选项表示连接成的可执行文件为reciprocal;连接时自动连接了标准C运行库;
g++ -o reciprocal main.o reciprocal.o -lpam 此处-lpam选项是连接一个叫libpam.a的文件;
g++ -o reciprocal main.o reciprocal.o -L. -lpam 此处-L.选项指示连接器先在当前文件夹中寻找libpam.a库文件;
gcc testglib.c -o testglib pkg-config --libs --cflags glib-2.0
编译用了glib库的程序
十七、gdb的使用
1.前提
要使用gdb,必须在编译时加上选项-g
gcc -g -c main.c
g++ -g -c -I ../include reciprocal.cpp
g++ -g -o reciprocal main.o reciprocal.o
如果是make,则可以这样编译
make CFLAGS=-g
2.gdb运用
gdb reciprocal
(gdb)run
如果运行出错,则可以
(gdb)where
可以找到什么地方出错
(gdb)up 2
一直这样向上走,可以到main的入口点
如果main 的第二个参数存在,则可以
(gdb)print argv1
同时可以利用下面的命令在main 入口点设置断点
(gdb)break main
如果运行时要输入参数
(gdb)run 7,其中7为参数
(gdb)next 从断点开始一步步运行函数,都是本源程序中的函数?
(gdb)step则从断点开始一步一步往下运行,包括系统自带的函数
十八、info问题
1、现象
- 输入info或者在emacs中用c-h i出来的页面只有几个帮助,不是基本所有命令的info都在
2、可能出现问题的地方
- a、/usr/info/dir没有编辑好
- b、INFOPATH不对,
- c、相关的info文件没有放到/usr/info/文件夹下面
十九、patch打补丁的用法:
1.打补丁
到需要打补丁的src目录下
patch -p1 < 补丁位置及名字或者patch -Np1 < 补丁位置及名字
2.撤销补丁
到需要打补丁的src目录下
patch -R < 补丁位置及名字
二十、gst-launch 字符叠加乱码
gst-launch videotestsrc ! video/x-raw-yuv,width=640,height=480,framerate=15/1 ! textoverlay text="测试" ! ffmpegcolorspace ! xvimagesink (这个没乱码)
gst-launch videotestsrc ! video/x-raw-yuv,format=\(fourcc\)YUY2,width=320,height=240 ! textoverlay text="测" ! xvimagesink (这个有乱码)
gst-launch videotestsrc ! video/x-raw-yuv,format=\(fourcc\)YUY2,width=320,height=240 ! textoverlay text="测" ! ffmpegcolorspace ! xvimagesink (这个也有乱码)
gst-launch videotestsrc ! video/x-raw-yuv,format=\(fourcc\)YUY2,width=320,height=240,framerate=15/1 ! textoverlay text="测试" ! ffmpegcolorspace ! xvimagesink
(这个也有乱码)
gst-launch videotestsrc ! video/x-raw-yuv,format=\(fourcc\)YUY2,width=640,height=480,framerate=15/1 ! textoverlay text="测试" ! ffmpegcolorspace ! xvimagesink
(这个没有乱码,与前面唯一的区别就是宽度改为640,高度改为480)
gst-launch v4l2src ! video/x-raw-yuv,width=640,height=480 ! textoverlay text="测试" ! xvimagesink(这个也没有乱码)
二一、常用软件及命令
simplescreenrecorder – 录制桌面
shutter – 截屏
indicator-keylock – xfce显示大小写锁定
ffmpeg -t 3.6 -ss 00:00:01 -i sc.mp4 sc.gif – 将mp4转为gif文件,3.6是秒数,00:00:01是开始时间
sslocal -c shadow.conf – 启动shadowsocks
lsof -i – 显示所有正在使用端口的链接情况
lsof -i:22 – 显示端口22的链接情况
xfconf-query -c xfce4-keyboard-shortcuts -l -v – 显示xfce的所有快捷键
chattr +i resolv.conf - 连root用户都不能修改此文件
chattr -i resolv.conf - 可以正常修改此文件了
lsattr resolv.conf -查看此文件的attr属性
linux dns 解析慢,卸载avahi-daemon,安装nscd,在/etc/nscd.conf中仅缓存hosts,重启nscd
python3 -m http.server - 在当前窗口打开一个端口为8000的服务器
python -m SimpleHTTPServer - 在当前窗口打开一个端口为8000的服务器,用python2
"echo a | sudo tee 1.txt" - 以sudo的方式将a写入
gnome-session-properties - ubuntu 16.04增加启动项
echo | clang -v -E -x c++ - - 获取linux的c++include路径,在#include "..." search starts here: #include <...> search starts here: 之后的就是
ldd test - 查看程序的依赖库
rmadison -u ubuntu libc6 - 查看库版本
aria2c -x 16 [url] - 多wget下载某个文件
adduser ubuntu -一步步指示增加ubuntu账户
adduser ubuntu sudo -将ubuntu加入sudo账户组
sudo passwd root - ubuntu打开root账户
sudo passwd -l root - ubuntu禁用root账户
cfdisk - 分区软件,其中有个type,可以选择为83格式,就是linux格式,但是mount的时候会出问题,必须要格式化;
mkfs.ext4 /dev/sda7 - mkfs或者mkfs.ext3,mkfs.ext4等,比如我有一个区为/dev/sda7,要格式化为ext4
sudo systemctl restart sshd - 重启sshd服务
echo a | sudo tee -a 1.txt - -a 是追加的意思,等同于 >>
sudo systemctl enable myapple.service - 将/lib/systemd/system/myapple.service 添加为开机启动
man -k pipe - 看出与pipe相关的所有manual页。
pdftohtml - pdf转html
mount -o loop /fedora-1.iso /mnt/usb - mount iso 文件
echo "30 23 * root shutdown -h now" >> /etc/crontab - 设置23:30定时关机
find / -ctime 0 - 在/下面找文件修改时间不超过一天的文件
filezilla - ftp服务器
gftp - ftp客户端,往windows传不会出现乱码
sudo apt-get install python-software-properties software-properties-common - 安装add-apt-repository
vim 没有系统剪贴板,具体表现就是输入下面的命令,得到-clipboard,注意前面这个减号就表示没有系统剪贴板
$ vim --version|grep clipboard
-clipboard +iconv +path_extra -toolbar
+eval +mouse_dec +startuptime -xterm_clipboard
解决方法也简单:
sudo apt-get install vim-gnome
服务器安全更新
sudo apt install --only-upgrade $(sudo apt upgrade --just-print | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq)
各种server certificate verification failed
- git的解决办法
git config --global http.sslVerify false
- wget的解决办法
wget https://xxx.xxx.xxx.xxx --no-check-certificate
如果curl没有问题而wget有问题,先查到openssl的默认目录,openssl version -d
culr -sv https://url,看看CAfile的路径
然后将CAfile所在的整个目录都copy到openssl version -d目录的openssl.cnf的file所在目录,一般都是openssl.cnf
所在的certs文件夹下面