查看机器是多少位
方法一
>>>$ getconf LONG_BIT
>>>$ 64
方法二
>>>$ uname -a
>>>$ Linux alex-virtual-machine 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
方法三
>>>$ uname -p
>>>$ x86_64
实用命令
| 命令 | 解释 |
|---|---|
| wc | 统计文本中行数、字数、字符数 |
| stat | 显示指定文件的详细信息,比ls更详细 |
| who | 显示在线登陆用户 |
| whoami | 显示当前操作用户 |
| hostname | 显示主机名 |
| uname | 显示系统信息 |
| top | 动态显示当前耗费资源最多进程信息 |
| ps | 显示瞬间进程状态 ps -aux |
| du | 查看目录大小 du -h /home带有单位显示目录信息 |
| df | 查看磁盘大小 df -h 带有单位显示磁盘信息 |
Linux 代码文件大小、行数、字节数统计
命令解释
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
- - c 统计字节数。
- - l 统计行数。
- - w 统计字数。
这些选项可以组合使用。
输出列的顺序和数目不受选项的顺序和数目的影响。
总是按下述顺序显示并且每项最多一列。
行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名。
例子
查看某个文件
Alex@alex:blog(master *)$wc -lcw package.json
24 44 618 package.json
查看某目录下的所有文件(包括子目录)
查看blog 目录下命名后缀是html 文件所有的数量
Alex@alex:blog$find blog/ -name "*.html"|wc -l
199
目录下所有md文件代码行数
find blog/ -name "*.md" |xargs cat|wc -l
或
wc -l `find ./ -name "*.md"`|tail -n1
统计当前目录下文件个数
ls -l |grep "^-"|wc -l
统计当前文件夹下目录的个数
ls -l |grep "^d"|wc -l
统计当前文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l
统计文件夹下目录的个数,包括子文件夹里的
ls -lR|grep "^d"|wc -l
查看磁盘或文件夹大小
显示磁盘分区上可以使用的磁盘空间
[root@QPDCCJK02 data]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 8.9G 9.9G 48% /
/dev/vdb1 20G 9.2G 9.4G 50% /data
查看当前目录大小
[root@QPDCCJK02 data]# du -sh
9.2G .
查看当前目录及其下级目录大小
du -lh –max-depth=x(x:值为1.2.3.4.5…表示显示多少级)
[root@QPDCCJK02 data]# du -lh --max-depth=1
536M ./jac_workspace
3.3G ./docker-bk
15M ./deploy
44M ./workspace
407M ./test-lf-log-backup
1.5M ./gagent_QA
45M ./wwwroot
8.0K ./gagent_Batch
4.9G ./gagent
16K ./lost+found
12M ./gagent_Dev
查看指定目录大小
[root@QPDCCJK02 data]# du -sh gagent
4.9G gagent
性能分析工具 TOP命令
TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
命令格式:
top [-] [d] [p] [q] [c] [C] [S] [n]
查看某个用户下的所有进程
alex@alex-virtual-machine:/mnt/hgfs/gagent/working/demo$ top -u alex
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2763 alex 20 0 80420 16m 10m S 10 1.6 0:11.69 unity-panel-ser
2865 alex 20 0 62216 4160 3268 S 6 0.4 0:05.54 hud-service
2617 alex 20 0 4544 2144 632 S 4 0.2 0:05.30 dbus-daemon
2646 alex 20 0 134m 12m 9884 S 2 1.2 0:09.35 metacity
2667 alex 20 0 107m 22m 17m S 2 2.3 0:09.72 unity-2d-panel
2679 alex 20 0 49608 8884 6936 S 2 0.9 0:02.26 bamfdaemon
2681 alex 20 0 104m 13m 10m S 2 1.4 0:02.65 nm-apple
查看单独某个进程
alex@alex-virtual-machine:/mnt/hgfs/gagent/working/demo$ ps -a
PID TTY TIME CMD
9463 pts/1 00:00:00 gizwits
9471 pts/2 00:00:00 ps
alex@alex-virtual-machine:/mnt/hgfs/gagent/working/demo$ top -p 9463
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9463 alex 20 0 30424 1152 944 S 2 0.1 0:00.74 gizwits
说明
| 名称 | 解释 |
|---|---|
| PID | 进程的ID |
| USER | 进程所有者 |
| PR | 进程的优先级别,越小越优先被执行 |
| NInice | 值 |
| VIRT | 进程占用的虚拟内存 |
| RES | 进程占用的物理内存 |
| SHR | 进程使用的共享内存 |
| S | 进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 |
| %CPU | 进程占用CPU的使用率 |
| %MEM | 进程使用的物理内存和总内存的百分比 |
| TIME+ | 该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 |
| COMMAND | 进程启动命令名称 |
运行日志输出到终端和保存起来
# 运行targe 目标,且同时把日志输出到终端和保存到文件log.txt
>>>$ ./targe | tee log.txt
tree 命令
此命令可以用树🌲形状显示目录结构;
mac 下安装
brew install tree
语法
tree(选项)(参数)
选项
-a:显示所有文件和目录;
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;
-C:在文件和目录清单加上色彩,便于区分各种类型;
-d:先是目录名称而非内容;
-D:列出文件或目录的更改时间;
-f:在每个文件或目录之前,显示完整的相对路径名称;
-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号;
-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;
-i:不以阶梯状列出文件和目录名称;
-l:<范本样式> 不显示符号范本样式的文件或目录名称;
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;
-n:不在文件和目录清单加上色彩;
-N:直接列出文件和目录名称,包括控制字符;
-p:列出权限标示;
-P:<范本样式> 只显示符合范本样式的文件和目录名称;
-q:用“?”号取代控制字符,列出文件和目录名称;
-s:列出文件和目录大小;
-t:用文件和目录的更改时间排序;
-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;
-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。
查看socket 端口占用情况
netstat -tunlp |grep 端口号
说明
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
显示命令执行时的参数
ps -aux | grep CMD
ubuntu 防火墙
# 查看状态
sudo ufw status
# 开启
sudo ufw enable
# 默认关闭外部访问
sudo ufw default deny
# 新增端口
sudo ufw allow 8080
# 删除端口
sudo ufw delete allow 8080
# 允许特定来源的ip地址访问
sudo ufw allow from 192.168.1.1
删除
- 删除目录下大小为0的文件
find ./ -name "*" -type f -size 0c | xargs -n 1 rm -f
- 删除当前目录下面所有 test 文件夹下面的文件
find ./ -name "test" -type d -exec rm -rf {} ;
- 删除文件夹下面的所有的.py文件
find ./ -name '.py' -exec rm -rf {} ;
- 显示当前路径下,大于50M的文件
find ./ -size +50M
- 删除当前路径下,大于50M的文件
find ./ -size +50M -exec rm {} \;
Linux 下测试TCP/UDP 连通性
通过netcat软件实现
- Ubuntu 安装
apt install netcat - CentOS 安装
yum install nc
测试方法
- 服务器
ubuntu@VM-133-112-ubuntu:~$ nc -l -u 1885 - 客户端
alexlin@DESKTOP-2Q06681:/mnt/e/work/gagent/GAgent_HFX30$ nc -u ubuntu.xxxxxx.com 1885
Help
ubuntu@VM-133-112-ubuntu:~$ nc -help
OpenBSD netcat (Debian patchlevel 1.187-1ubuntu0.1)
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]
Command Summary:
-4 Use IPv4
-6 Use IPv6
-b Allow broadcast
-C Send CRLF as line-ending
-D Enable the debug socket option
-d Detach from stdin
-F Pass socket fd
-h This help text
-I length TCP receive buffer length
-i interval Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects
-l Listen mode, for inbound connects
-M ttl Outgoing TTL / Hop Limit
-m minttl Minimum incoming TTL / Hop Limit
-N Shutdown the network socket after EOF on stdin
-n Suppress name/port resolutions
-O length TCP send buffer length
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects
-q secs quit after EOF on stdin and delay of secs
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s source Local source address
-T keyword TOS value
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode
-V rtable Specify alternate routing table
-v Verbose
-W recvlimit Terminate after receiving a number of packets
-w timeout Timeout for connects and final net reads
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port] Specify proxy address and port
-Z DCCP mode
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
dos2unix批量转换方法
find /apps/cws -name "*.sh" -exec dos2unix {} \; (注意:一定要有{},标示参数;以“\;”结尾; {} 和\之间一定要有一个空格)
删除文件
删除指定目录下10天前产生的文件
find . -mtime +10 -name "*.*" -exec rm -rf {} \;
解释
-mtime:标准语句写法
+10:查找10天前的文件,这里用数字代表天数,+30表示查找30天前的文件
“.“:希望查找的数据类型,”.jpg”表示查找扩展名为jpg的所有文件,”“表示查找所有文件
-exec:固定写法
rm -rf:强制删除文件,包括目录
{} ; :固定写法,一对大括号+空格+\+;
库文件查看工具
linux下查看程序的动态库依赖(so)
ldd xxx
例子如下,左边是依赖库名称,右边是依赖库位置(若存在则为路径,不存在则输出not found)

查看库文件(.a)包含的函数和变量
nm xxx.a