操作linux系统时免不了会有各种查询系统信息,以下是在开发时主要针对系统应用的查询
1、如何查看自己的linux是32位还是64位
- getconf LONG_BIT :返回的结果是32则说明是32位,返回的结果是64则说明是64位
- uname -a :x86_64就是64位的,没有就是32位的
2、提高linux系统的执行性能在以下几方面可以考虑,详细的实现请查看我的博客
- 高并发机制-->libphenom
- 内存管理-->tcmalloc
3、linux中查看正在运行的进程以及杀死进程
1. ps命令
ps *
- -A:显示所有进程
- -a:显示终端中包括其它用户的所有进程
- x:显示无控制终端的进程
2. top命令提供了运行中系统的动态实时视图
3. 强制杀死进程: kill -9 ID
-9 制定了传递给进程的信号是9,即强制、尽快终止进程。各个终止信号及其作用见附录
4、linux中 shell脚本的 time简单简介
time命令 用于 打印出一条命令或一个程序的执行时间
time 命令以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。
用法:time [ -p ] Command [ Argument ... ]
举例:想知道 列举edu文件夹这一命令 花费的时间:
time ls /edu
想知道 将文件复制到某一文件夹 花费的时间:
time cp /edu/***/h /edu/***/Documents
想知道 一个脚本运行的时间:
time ./123.sh
time命令结果有三行组成:real、user和sys。我们这里用的都是real值,CPU用时被划分为user和sys两块。
real值表示从程序开始到程序执行结束时所消耗的时间,包括CPU的用时。
user值表示程序本身,以及它所调用的库中的子例程使用的时间。
sys是由程序直接或间接调用的系统调用执行的时间。
在单处理器上,real值和整个CPU用时之差,也就是real - ( user + sys )是所有延迟程序执行的因素的总和。在SMP上,这个值近似为real * number_of_processors - ( user + sys )。这些因素包括:
•调入程序文本和数据的IO操作
•获取程序实际使用内存的IO操作
•由其它程序消耗的CPU用时
•由操作系统消耗的CPU用时
5、linux下tree命令可以打印出树状目录结构
linux下tree命令安装:centos系统系下--->yum install tree
查看帮助:tree --help
其中常用参数:
-a:打印全部文件。
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合(显示的树状图为实线不是虚线)。
-C:在文件和目录清单加上色彩,便于区分各种类型。
-d:只打印目录。
-L level:指定打印目录的深度(层级)。
-f:打印出每个文件、目录的绝对路径。
6、CentOs7查看系统已有的用户和用户组
- 查看用户:cut -d : -f 1 /etc/passwd
- 查看用户组:cut -d : -f 1 /etc/group
- 删除edu这个用户:userdel -r edu
7、ldd命令可以查看一个可执行程序依赖的共享库。
例如# ldd /bin/ln
8、查看进程间的通信机制(ipc )
- ipcs -l 命令来查看当前ipc 参数的各种设置
- ipcs -a :显示全部可以显示的信息
- ipcs -q:显示活动的消息队列
- ipcs -m:显示活动的共享内存信息
- ipcs -s:显示活动的信号量信息
在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。在linux下有多种进程间通信的方法:半双工管道、命名管道、消息队列、信号、信号量、共享内存、内存映射文件,套接字等等。
MSGMNI--- 这个参数决定了系统中同时运行的最大的message queue的个数。
MSGMNI:/proc/sys/kernel/msgmni文件中定义了该值;
最大65535;最小128
- linux中输出:文件名、行号、函数
printf("%s——%d——%s\n",__FILE__,__LINE__,__FUNCTION__);
- linux中查看文件大小
du -sh [目录名] 返回该目录的大小
du -sm [文件夹] 返回该文件夹总M数
du -h [目录名] 查看指定文件夹下的所有文件大小(包含子文件夹)
更新详细命令文档:
du --help
- linux中查看硬盘大小及分区大小
df -hl 查看磁盘剩余空间
df -h 查看每个根路径的分区大小
更新详细命令文档:
df --help
查看硬盘的分区:fdisk -l
查看IDE硬盘信息:hdparm -i /dev/hda
查看STAT硬盘信息:hdparm -I /dev/sda 或 apt-get install blktool 或 blktool /dev/sda id
查看目录占用空间:du -hs 目录名
U盘没法卸载 #sync fuser -km /media/usbdisk
调试gdb和dmesg+addr2line
- 我们在用这个命令的时候主要是为了产生core文件,就是程序运行发行段错误时的文件:ulimit -c unlimited (具体使用百度)
基于gdb调试: gdb ./test core.0001-->bt-->
- tail -f 实时查看日志文件 tail -f 日志文件log
dmesg+addr2line调试
dmesg ,一种程序,用于检测和控制内核缓冲。程序用来帮助用户,了解系统的启动信息,可以获得出错堆栈地址。
addr2line ,可以将指令的地址和可执行映像转换成文件名,函数名或源代码的工具。这种功能将跟踪地址转换成更有意义的内容来说很有用。
在调用 addr2line 工具时,要使用 -e 选项来指定可执行映像,使用 -f 选项可以告诉工具输出函数名。
linux下操作过程:
[root@localhost]# dmesg | grep a.out
[ 212.330289] a.out[1946]: segfault at 0 ip 00000000004f850c sp 00007ffdf0aafbb8 error 6 in a.out[400000+1000]
[ 227.437065] a.out[1989]: segfault at 0 ip 00000000004f850c sp 00007ffdf0aafbb8 error 6 in a.out[400000+1000]
[root@localhost]#
[root@localhost]# addr2line -e a.out 00000000004f850c
/root/share/main.cpp:66
先通过dmesg找到对应出错的地址,再用 addr2line -e 将地址解析到对应的代码行
yum的简单应用
- 1.列出所有可更新的软件清单命令:yum check-update
- 2.更新所有软件命令:yum update
- 3.仅安装指定的软件命令:yum install <package_name>
- 4.仅更新指定的软件命令:yum update <package_name>
- 5.列出所有可安裝的软件清单命令:yum list
- 6.删除软件包命令:yum remove <package_name>
- 7.查找软件包 命令:yum search <keyword>
- 8.清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
- 9.查询ifconfig依据什么软件包:yum provides ifconfig (yum provides <package_name>)
- yum list installed //列出所有已安装的软件包
- //下载 RPM 包及其所有依赖包
- yumdownloader xxxx*
- yum -y install --downloadonly --downloaddir=/tmp/ xxxx* //--downloadonly 说明只下载,--downloaddir 指定安装到哪个目录下
- yumdownloader --destdir ./ --resolve mariadb-server.x86_64 //下载制定路径及依赖
- linux终端路径过长的问题
第一中方式:
#打开编辑sh配置文件
sudo vim ~/.bashrc
#找到62行左右位置,PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '
#将其中的大写字母W改成小写w
#重写打开终端即可或者是执行`source ~/.bashrc`立即生效
第二种方式:
vim ~/.bash_profile
在最后一行添加 export PS1='[${debian_chroot:+($debian_chroot)}\u@\h:\W]\\$ '
wq!保存退出
source ~/.bash_profile
- centos查看关机记录
last |grep shutdown
last |grep reboot
last
- linux之间传输
scp -r file/ 192.0.0.0:/root
- 不输出终端的打印
2> /dev/null //系统输出的日志
1> /dev/null //工程日志输出到终端
sudo nohup ./tunVnet >/opt/hegs.bin 2>&1 & //后台运行
- 追踪栈信息(查看假死的进程)
pstack
- QT界面输调试输出
export QT_DEBUG_PLUGINS=1
- 监控网卡流量
dstat -n -N xxx
- tcpreplay commend:
tcpreplay -i eno1 -I xxx -l 1000 -t -c ftp.cache ftp.pcap
tcpprep -a client -i ftp.pcap -o ftp.cache
tcpdump tcp -i xxx -t -s 0 -w ftp.pcap
tcpreplay -i xxx -l 0 -M 1000 1.pcap
扩展:输出到终端界面
tcpdump -i lo port 9000 -XX -S
- 查看大页信息
cat /proc/meminfo | grep Huge
- 查端口占用的进程号
比如80端口占用的进程
lsof -i:80
杀死进程:kill -9 进程号
查看网络端口号
netstat -apn | grep 9092
nc : 短小精悍、功能实用,被设计为一个简单、可靠的网络工具
-
Linux一个网卡配置多个ip
ifconfig eth0 192.168.6.99 netmask 255.255.255.0 up //配置静态ip
1、设置网卡的ip别名(临时配置,重启机器就没有了)
ifconfig eth0:0 192.xxx.xxx.xxx netmask 255.255.255.0 up
ifconfig eth0:1 192.xxx.xxx.xxx netmask 255.255.255.0 up
2、验证ip:ping 192.168.6.100
3、清除ip别名:ifconfg eth0:0 down
注意:永久配置ip别名
打开网卡的/etc/sysconfig/network-scripts目录下配置文件进行添加
#vi ifcfg-eth0
打开网卡的配置文件,将里面所有字段复制一下
#vi ifcfg-eth0:0
创建eth0:0的配置文件,并将刚才复制的字段粘贴到这个配置文件,按照下文的介绍修改部分信息,修改完成后保存退出
###centos7.4
1, 关闭图形界面:
init 3 关闭图形界面(XServer服务也会关闭)
2. 开启图形界面:
init 5 或 startx
###ubuntu
mac地址表默认老化时间300秒,可以通过命令进行修改:mac-address aging-time xxx
查看老化时间:display mac-address aging-time