linux常用软件及命令记录

默认分类 · 2017-11-05

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相关功能

三、dropbox

四、踢掉已登录的其他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文件夹下面

linux
Theme Jasmine by Kent Liao