概述
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也可
-
- 通过查找gcc的环境变量C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/OBJC_INCLUDE_PATH来搜索头文件位置。
-
- 再找内定目录搜索,分别是
/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设备驱动开发详解_宋宝华.
源码目录介绍
Linux内核组成部分
进程调度SCHED, 内存管理MM, 虚拟文件系统VFS,网络接口NET, 进程间通信IPC 等五个子系统组成.
- 1 进程调度:
精度调度控制系统中多个进程对cpu的访问,使得多个进程能够在cpu中微观串行, 宏观并行执行. 进程调度处于系统的中心位置, 内核中其他子系统都依赖它, 因为每个子系统都需要挂起或恢复进程.
常用名称简称
- soc : system on chip = cpu上片上系统
- gpio : general purpose input/output = 通用输入/输出
- scm :single chip microcomputer = 单片机
- mcu : micro controller unit = 微控制器
- dsp :Digital Signal Processor = 数字信号处理器
- dai : digital audio interface = 数字音频接口, 用于cpu平台和codec通信.
- 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支持作用控制,有以下命令:
- command& 让进程在后台运行
- jobs 查看后台运行的进程
- fg %n 让后台运行的进程n到前台来
- 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 参考
- Ctrl+Alt+T 打开终端执行以下命令:
sudo add-apt-repository ppa:openjdk-r/ppa
输入你的sudo密码继续 - 升级系统资源包并安装openjdk1.8:
sudo apt-get update
sudo apt-get install openjdk-8-jdk - 在多个JDK版本中切换JDK
sudo update-alternatives --config java
选择你需要的JDK版本:
设置一个默认JAVA
sudo update-alternatives --config javac - 检查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
"
(which zsh) 重启或者重新远程登录 第一次进入shell会提示 , 先默认选0 然后安装oh my zsh sh -c "
(whichzsh)重启或者重新远程登录第一次进入shell会提示,先默认选0然后安装ohmyzshsh−c"(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).*/1n/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).*/1n/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/*
解压
- *.tar 用 tar –xvf 解压
- *.gz 用 gzip -d或者gunzip 解压
- .tar.gz和.tgz 用 tar –xzf 解压
- *.bz2 用 bzip2 -d或者用bunzip2 解压
- *.tar.bz2用tar –xjf 解压
- *.Z 用 uncompress 解压
- *.tar.Z 用tar –xZf 解压
- *.rar 用 unrar e解压
参考 - .zip 用 unzip 解压
解压一个目录下所有zip文件
find . -name "V510.zip" | xargs -n1 unzip - *.tgz 用tar zxvf /xx -C /xx
- *.tar.xz 用$xz -d ***.tar.xz 然后tar -xvf ***.tar
可以看到这个压缩包也是打包后再压缩,外面是xz压缩方式,里层是tar打包方式。
补充:目前可以直接使用 tar xvJf ***.tar.xz来解压
su 认证失败
sudo passwd
password:xx
磁盘分区
- 主分区 : 最多只能有4个
- 扩展分区 :
最多只能有一个
主分区假扩展分区最多有4个
不能写入数据,只能包含逻辑分区
- 逻辑分区(分区名从5开始 , 1-4主分区使用)
格式化
是指根据用户选定的文件系统 , 默认文件系统最小存储单元为4kb(数据块block) , 同时会建立文件表.
- FAT16 - 最大只能支持2G分区大小
- FAT32 - 最大支持16G分区大小 , 但是单个文件不能超过4G
- NTFS - windows常用
- EXT2
- EXT3
- 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 |
- 设备文件名
a. /dev/hda1(IDE硬盘接口, 常用光驱接口 , 传输速率133Mb/s , a1表示第一个硬盘的第一个分区,以此类推)
b. /dev/sda1(SCSI硬盘接口, 服务器常用接口 , 200Mb/s ,SATA硬盘接口 , 目前常用 , sata3 速率500Mb/s)
挂载
- 必须分区
/ 根分区
swap分区(交换分区,内存2倍(内存不超过4G时,超过则和内存一致即可),不超过2GB)
- 推荐分区
/boot (启动分区 , 200MB)
查看目录大小
du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量
du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量
du -h --max-depth=1 /mnt/xxx : 查看某个某个目录
du -h -d 1 递归一层目录大小
df -h 整个硬盘占用情况
最后
以上就是可耐白云为你收集整理的Linux常用操作设置0表示禁用Apportw,或者1开启它。你可以用下面的命令暂时关闭它:sudo service apport start force_start=1的全部内容,希望文章能够帮你解决Linux常用操作设置0表示禁用Apportw,或者1开启它。你可以用下面的命令暂时关闭它:sudo service apport start force_start=1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复