Linux常用操作

wireshark

安装
sudo add-apt-repository ppa:wireshark-dev/stable
Step 2: Update the repository:
sudo apt-get update
Step 3: Install wireshark 2.0:
sudo apt-get install wireshark
Step 4: Run wireshark:
sudo wireshark
If you get a error couldn’t run /usr/bin/dumpcap in child process: Permission Denied. go to the terminal again and run:
sudo dpkg-reconfigure wireshark-common
Say YES to the message box. This adds a wireshark group. Then add user to the group by typing
sudo adduser $USER wireshark

抓包usb
addgroup usbmon
gpasswd -a $USER usbmon
sudo vi /etc/udev/rules.d/99-usbmon.rules
#加入下面一行,保存退出
SUBSYSTEM==“usbmon”, GROUP=“usbmon”, MODE="640“

lsusb查看usb设备在哪条总线上
1.打开wireshark
sudo wireshark
2.选中usbmon1代表抓取Bus 001的报文
在抓取的报文中有Devices: 26即为我们要抓的USB设备报文
参考

运行报错
直接运行wireshark的话会报错:

Lua: Error during loading:
[string “/usr/share/wireshark/init.lua”]:45: dofile has been disabled
要对其进行修改,终端运行
sudo gedit /usr/share/wireshark/init.lua
倒数第二行改为–dofile(DATA_DIR…”console.lua”)

make 版本变更

如何更新make?
1、下载make 3.81
make工具的官方镜像地址:http://ftp.gnu.org/gnu/make/ ,下载指定版本的make源码包,这里我们下载make-3.81.tar.gz。

2、解压make源码包
Ubuntu桌面环境直接右键解压即可,也可以打开shell到所在目录,执行:

$tar xvf make-3.81.tar.gz
3、执行configuration
$./configuration
4、执行build.sh
$sh build.sh
5、安装make
执行:

$sudo make install
即可安装make。有看到有人到这一步先执行卸载make的操作,一是没必要,新旧make是独立的,安装后新make会首先执行,二是先卸载make,还怎么执行安装。也不必执行什么update-alternatives和替换make的操作,这样不再需要新装的make,直接卸载,系统会恢复原装的make。
三、如何卸载make install安装的make
make install安装的程序如果需要卸载,一般需要以上第四步执行build.sh后的包,再执行:

$sudo make uninstall
1
即可完成卸载(需要程序支持,很幸运make程序是支持的),所以一般建议保留安装时的安装包。

gcc寻找头文件的路径(按照1->2->3的顺序)

× 1. 在gcc编译源文件的时候,通过参数-I指定头文件的搜索路径,如果指定路径有多个路径时,则按照指定路径的顺序搜索头文件。命令形式如:“gcc -I /path/where/theheadfile/in sourcefile.c“,这里源文件的路径可以是绝对路径,也可以是相对路径。eg:

设当前路径为/root/test,include_test.c如果要包含头文件“include/include_test.h“,有两种方法:

1) include_test.c中#include “include/include_test.h”或者#include "/root/test/include/include_test.h",然后gcc include_test.c即可

2) include_test.c中#include <include_test.h>或者#include <include_test.h>,然后gcc –I include include_test.c也可
    1. 通过查找gcc的环境变量C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/OBJC_INCLUDE_PATH来搜索头文件位置。
    1. 再找内定目录搜索,分别是
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include

最后一行是gcc程序的库文件地址,各个用户的系统上可能不一样。
gcc在默认情况下,都会指定到/usr/include文件夹寻找头文件。
gcc还有一个参数:-nostdinc,它使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置。在编译驱动模块时,由于非凡的需求必须强制GCC不搜索系统默认路径,也就是不搜索/usr/include要用参数-nostdinc,还要自己用-I参数来指定内核头文件路径,这个时候必须在Makefile中指定。

源码下载

建议初学者从linux2.6开始学习(下载地址)[https://mirrors.edge.kernel.org/pub/linux/kernel/]
1, linux2.6版本相对于之前2.4有较大改进, 也更为成熟.
2, 相对于高版本, 该版本代码量小 , 更简单清晰.

参考资料

1, Linux设备驱动开发详解_宋宝华.

源码目录介绍

linux2.6源码目录结构

Linux内核组成部分

进程调度SCHED, 内存管理MM, 虚拟文件系统VFS,网络接口NET, 进程间通信IPC 等五个子系统组成.

  • 1 进程调度:
    精度调度控制系统中多个进程对cpu的访问,使得多个进程能够在cpu中微观串行, 宏观并行执行. 进程调度处于系统的中心位置, 内核中其他子系统都依赖它, 因为每个子系统都需要挂起或恢复进程.
    进程调度
常用名称简称
  1. soc : system on chip = cpu上片上系统
  2. gpio : general purpose input/output = 通用输入/输出
  3. scm :single chip microcomputer = 单片机
  4. mcu : micro controller unit = 微控制器
  5. dsp :Digital Signal Processor = 数字信号处理器
  6. dai : digital audio interface = 数字音频接口, 用于cpu平台和codec通信.
  7. DMA : Direct Memory Access=直接内存存取
存储单位:

1汉字=2字节
1字节 [Byte]=8字位=8个[二进制数]
1字位([bit]=1个[二进制数]
1B=8b
1[KB]=1024B
1[MB]=1024[KB]
1[GB]=1024[MB]
硬件商标准:
1[GB]=1000[MB]
1MB=1000[KB]
1KB=1000B

通常情况下,把B称为字节、b称为字位、KB称为千字节

查找问题中字符串出现次数

cat file|grep -i 字符串 |wc -l

lubuntu 回复默认任务栏

google 搜索 : lubuntu lxpanel default
参考

cp /usr/share/lxpanel/profile/Lubuntu/panels/panel ~/.config/lxpanel/Lubuntu/panels
lxpanelctl restart
xshell连接不上

ps -e |grep ssh 查看是否有ssh服务,如果没有则安装
sudo apt install openssh-server
ifconfig查看ip地址即可.

新安装的ubuntu,执行shell命令出错
原来, ubuntu默认的是dash, 需要手动执行命令将dash改为bash.
命令: sudo dpkg-reconfigure dash。
然后出现的界面中选择 NO, 之后就正常啦。

查看USB设备Pid和Vid
ls /sys/bus/usb/devices/
cat /sys/bus/usb/devices//idVendor
cat /sys/bus/usb/devices/
/idProduct
也可以lsusb -v查看

本文来自 top_worker 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/top_worker/article/details/44807119?utm_source=copy

文件显示时间排序

ls -lt

前后台命令切换

参考
当运行一个程序,用ctrl+z将其暂停同时放到后台.
需要将其关掉则需要如下操作
方法一、输入命令:jobs
终端显示:[1]+ Stopped vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /)
KILL %1
方法二、输入命令:jobs -l
终端显示:[1]+ 4664 停止 vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /)
看到4664,这个就是PID了
现在开始杀掉它:
输入命令:kill 4664

A,Shell支持作用控制,有以下命令:

  1. command& 让进程在后台运行
  2. jobs 查看后台运行的进程
  3. fg %n 让后台运行的进程n到前台来
  4. bg %n 让进程n到后台去;
删除除某文件之外的其他文件和文件夹

如abc文件夹下有a、b、c三个文件,如何一行命令删除b和c,不删除a
其中rm -f !(a) 最为方便。如果保留a和b,可以运行rm -f !(a|b)来实现
不过一般bash中运行后会提示
“-bash: !: event not found ” 可以通过运行shopt -s extgolb来解决。如下:
[root@localhost /]# mkdir abc
[root@localhost /]# cd abc
[root@localhost abc]# touch a b c
[root@localhost abc]# ls
a b c
[root@localhost abc]# rm -f !(a)
-bash: !: event not found
[root@localhost abc]# shopt -s extglob
[root@localhost abc]# rm -f !(a)
[root@localhost abc]# ls
a
[root@localhost abc]# touch b c d
[root@localhost abc]# rm -f !(a|b)
[root@localhost abc]# ls
a b
另外也可以使用下面的方法:
[root@localhost abc]# ls
a b c
[root@localhost abc]# ls |grep -v a |xargs rm -f
[root@localhost abc]# ls
a

update-alternatives 切换软件版本

参考
update-alternatives 命令中的几个主要选项,display、install、remove、config

display:
如查看java安装版本情况
update-alternatives --display java

config:
用于切换版本
config参数用于给某个命令选择一个link值,相当于在可用值之中进行切换
如:uptate-alternatives --config java

install:
选项的功能就是增加一组新的系统命令链接符了,使用语法为:update-alternatives --install link name path priority [–slave link name path]… 其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录); name为命令链接符名称,如java; path为你所要使用新命令、新软件的所在目录; priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接;
如:
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_38/jre/bin/java 100
sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.8.0_131/jre/bin/java 200

python类似

update-alternatives: --install 需要 <链接> <名称> <路径> <优先级>
# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 100
# update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2 200
安装openjdk 8 参考
  1. Ctrl+Alt+T 打开终端执行以下命令:
    sudo add-apt-repository ppa:openjdk-r/ppa
    输入你的sudo密码继续
  2. 升级系统资源包并安装openjdk1.8:
    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
  3. 在多个JDK版本中切换JDK
    sudo update-alternatives --config java
    选择你需要的JDK版本:
    设置一个默认JAVA
    sudo update-alternatives --config javac
  4. 检查JDK版本:
    java -version
    输出以下信息表示成功
    openjdk version “1.8.0_01-internal”
    OpenJDK Runtime Environment (build 1.8.0_01-internal-b04)
    OpenJDK 64-Bit Server VM (build 25.40-b08, mixed mode)
切换zsh和默认bash

查看当前shell
$ echo $SHELL

chsh -s /bin/bash
切换zsh
chsh -s /bin/zsh
退出terminal再进入即可.
注: 在编译android运行. setenv时会提示没有那个目录或文件, 是因为当前是zsh引起,
切回默认bash即可.

oh my zsh

安装zsh
apt install zsh
查看版本
zsh --version
修改默认shell
chsh -s ( w h i c h z s h ) 重 启 或 者 重 新 远 程 登 录 第 一 次 进 入 s h e l l 会 提 示 , 先 默 认 选 0 然 后 安 装 o h m y z s h s h − c &quot; (which zsh) 重启或者重新远程登录 第一次进入shell会提示 , 先默认选0 然后安装oh my zsh sh -c &quot; (whichzsh)shell,0ohmyzshshc"(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
或者
sh -c “$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)”
需要注意的是在一些git仓库较大情况下 , 进入目录会非常卡 , 建议切回bash.
或者
解决办法:
设置 oh-my-zsh 不读取文件变化信息(在 git 项目目录执行下列命令)
$ git config --add oh-my-zsh.hide-dirty 1
如果你还觉得慢,可以再设置 oh-my-zsh 不读取任何 git 信息
$ git config --add oh-my-zsh.hide-status 1

ubuntu开机时出现"检测到系统程序错误"

参考
1,sudo rm /var/crash/*
2,gksu gedit /etc/default/apport
这个文件的内容是:

设置0表示禁用Apportw,或者1开启它。

你可以用下面的命令暂时关闭它:

sudo service apport start force_start=1

enabled=1

minicom设置

1, 配置端口:
默认配置文件在~/.minicom.dlf 而不是/etc/minicom/下
开启同时打开设置 sudo minicom -s
2, 保存log文件:
ctl + a z 打开设置, 选择L(capture on/off)
3, log时间戳
ctl + a z 选择N, Timestamp toggle

命令行只显示设置

1, 只显示当前目录,不显示全路径
$ vim .bashrc
找到这行,并修改为
PS1=’[KaTeX parse error: Expected '}', got 'EOF' at end of input: …ebian_chroot:+(debian_chroot)}\u@\h:\W]$ ’
把小写w改为大写W,显示完整路径为相对路径,只显示当前文件夹名字
2, 让路径和命令行分行显示在末尾加上 \n 就可以
PS1=’[KaTeX parse error: Expected '}', got 'EOF' at end of input: …ebian_chroot:+(debian_chroot)}\u@\h:\W]$ \n’

设置su初始化密码

sudo passwd
su

查单词

参考
1, 在.bashrc中添加

#translation
ts(){
words=""
for word in $@;
do
if [ -e $word ];then
cat $word|while read line;
do
echo $line >>$word.out;
curl -s http://fanyi.youdao.com/openapi.do?keyfrom=minede\&key=1074042860\&type=data\&doctype=json\&version=1.2\&q=$line|sed 's/{\"translation\":\[\"\(.*\)\"\],\"\(b\|q\).*/\1\n/g' >>$word.out;
done;
else
curl -s http://fanyi.youdao.com/openapi.do?keyfrom=minede\&key=1074042860\&type=data\&doctype=json\&version=1.2\&q=$word|sed 's/{\"translation\":\[\"\(.*\)\"\],\"\(b\|q\).*/\1\n/g';
fi
done
return ;
}

2, source .bashrc
3, ts hello dictory

按键精灵

参考
sudo apt install xdotool
xdotool mousemove 1 1 click 1 =>移动到左上角并点击
watch -n 2 xdotool mousemove 1 1 click 1 => 每隔2s点击左上角
eg:
watch -n 2 xdotool mousemove 300 420 click 1 mousemove 340 440 click 1

查看u盘文件格式

fdisk -l /dev/sdx : x根据插入情况调整, 可以看到类型目录列中显示.

Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 57D90865-D52A-44C3-B825-491856BC07FA
设备 Start 末尾 扇区 Size 类型
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 2050047 999424 488M Linux filesystem
/dev/sda3 2050048 976771071 974721024 464.8G Linux LVM

teriminal 打开文件夹

nautilus .

查看usb设备vid和pid

ls /sys/bus/usb/devices/ 可以查看现有的USB,如何插上你需要查看的USB,就会发现终端中输入一些USB的信息,然后可以在新增的文件中找到cat /sys/bus/usb/devices//idVendor cat /sys/bus/usb/devices//idProduct
或者直接lsusb

ssh使用

安装: # apt-get install ssh
启动: # service ssh start
# service ssh stop
# service ssh restart
查看: # ps -e|grep ssh
配置: 修改 / etc/ssh/sshd_config

只查看文件或文件夹

只显示文件夹 ls -l | grep ^d
只显示文件 ls -l | grep ^-

解释一下:
ls -l 之后会得到下面的内容
drwx------ 4 jinwang users 4096 2012-02-09 15:00 .xchat2
-rw-r–r-- 1 jinwang users 1690399 2012-06-04 12:16 45s.txt
文件是以 "-"开头 , 文件夹是 d, 所以这就是后面grep的内容。
^是正则表达 匹配输入字符串开始的位置。

path 环境乱了

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

目录下所有.sh文件添加可执行权限

find -name *.sh | xargs chmod +x

查看ubuntu系统版本

proc目录下记录的当前系统运行的各种数据,version记录的版本信息直接可以通过cat查看到。

第一种
使用命令:cat /proc/version 查看
arte@arte:/work$ cat /proc/version
Linux version 4.13.0-32-generic (buildd@lgw01-amd64-004) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)) #35~16.04.1-Ubuntu SMP Thu Jan 25 10:13:43 UTC 2018
proc目录下记录的当前系统运行的各种数据,version记录的版本信息可以直接通过cat查看到,还可以看到我的gcc版本呢。

第二种
使用命令:uname -a 查看
arte@arte:/work$ uname -a
Linux arte 4.13.0-32-generic #35~16.04.1-Ubuntu SMP Thu Jan 25 10:13:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

第三种
使用命令:lsb_release -a 查看
arte@arte:/work$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

ubuntu64位支持32位运行库
apt-get install lib32ncurses5 ​
apt-get install lib32z1
修改文件及目录权限

Linux下批量修改文件及文件夹所有者及权限需要使用到两个命令,chmod以及chown
例:对/opt/目录下的所有文件与子目录执行相同的权限变更:
chmod -R 700 /opt/oracle/
-R参数是递归 处理目录下的所有文件以及子文件夹
700是变更后的权限表示(只有所有者有读和写以及执行的权限)
/opt/oracle/ 是需要执行的目录
例:对 /opt/oracle/ 目录下的所有文件与子目录执行相同的所有者变更,使所有者修改为oinstall用户组的oracle用户
chown -R oracle:oinstall /opt/oracle/
-R 同上
oracle:oinstall oinstall用户组的oracle,用户组不必须

压缩

zip -r xx.zip xx/*

解压
  1. *.tar 用 tar –xvf 解压
  2. *.gz 用 gzip -d或者gunzip 解压
  3. .tar.gz和.tgz 用 tar –xzf 解压
  4. *.bz2 用 bzip2 -d或者用bunzip2 解压
  5. *.tar.bz2用tar –xjf 解压
  6. *.Z 用 uncompress 解压
  7. *.tar.Z 用tar –xZf 解压
  8. *.rar 用 unrar e解压
    参考
  9. .zip 用 unzip 解压
    解压一个目录下所有zip文件
    find . -name "V510
    .zip" | xargs -n1 unzip
  10. *.tgz 用tar zxvf /xx -C /xx
  11. *.tar.xz 用$xz -d ***.tar.xz 然后tar -xvf ***.tar
    可以看到这个压缩包也是打包后再压缩,外面是xz压缩方式,里层是tar打包方式。
    补充:目前可以直接使用 tar xvJf ***.tar.xz来解压
su 认证失败

sudo passwd
password:xx

磁盘分区
  1. 主分区 : 最多只能有4个
  2. 扩展分区 :

最多只能有一个
主分区假扩展分区最多有4个
不能写入数据,只能包含逻辑分区

  1. 逻辑分区(分区名从5开始 , 1-4主分区使用)
格式化

是指根据用户选定的文件系统 , 默认文件系统最小存储单元为4kb(数据块block) , 同时会建立文件表.

  1. FAT16 - 最大只能支持2G分区大小
  2. FAT32 - 最大支持16G分区大小 , 但是单个文件不能超过4G
  3. NTFS - windows常用
  4. EXT2
  5. EXT3
  6. ETX4 - 较为先进 , linux常用
分区设备文件名

Linux中一切皆文件

硬件设备文件名
IDE硬盘/dev/hd[a-d]
SCSI/SATA/USB硬盘/dev/sd[a-p]
光驱/dev/sdrom或/dev/hgc
软盘/dev/fd[0-1]
打印机(25针)/devlp[0-2]
打印机(USB)/dev/usb/lp[0-15]
鼠标/dev/mouse
  1. 设备文件名
    a. /dev/hda1(IDE硬盘接口, 常用光驱接口 , 传输速率133Mb/s , a1表示第一个硬盘的第一个分区,以此类推)
    Paste_Image.png

b. /dev/sda1(SCSI硬盘接口, 服务器常用接口 , 200Mb/s ,SATA硬盘接口 , 目前常用 , sata3 速率500Mb/s)

Paste_Image.png

Paste_Image.png

挂载
  1. 必须分区

/ 根分区
swap分区(交换分区,内存2倍(内存不超过4G时,超过则和内存一致即可),不超过2GB)

  1. 推荐分区

/boot (启动分区 , 200MB)

查看目录大小

du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量
du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量
du -h --max-depth=1 /mnt/xxx : 查看某个某个目录
du -h -d 1 递归一层目录大小
df -h 整个硬盘占用情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值