开发常用
持续更新…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
ls
cd
pwd
echo
mv
rm x.txt
rm x.txt foo.txt
rm -r
cp -r dir1 dir2
scp -r
mkdir -p
df
man
man pwd
man -h
ls -h
man --help
#查看文件内容
cat (Concatenate and print Files)
cat a.txt
cat a.txt b.txt
cat < a.txt
# head and tail (head 10 line ,last 10 line )
head a.txt
tail a.txt
tail -n 5 a.txt
tail -f a.txt
# / 查找
man less | grep -n sim
##wc 统计单词
word,line and byte count
man pwd | wc
man wc | wc
|
chomd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
chmod +X
chmod: (Change Mode)改变文件的权限
chmod +x foo #增加可执行权限/ +W +r
chmod -x foo #移除可执行权限/ -W-r
chmod 740 foo # 把foo的权限设置成740
Owner: 7 = 1 + 2 + 4 = 可执行+可写+ 可读
Group: 4 = 4 = 可读
Others: 0 = 没有任何权限常见:
###常见
644 -rw-r--r-- # default
755 -rwxr-Xr-X
777 -rwxrwxrwx # 危险! use chown/chgrp instead
#添加可执行权限
chomd +x xxx.py
ll
total 16
-rw-r--r-- 1 obsidianxiexxx staff 21B 7 30 01:13 hellow.txt
-rw-r--r-- 1 obsidianxiexxx staff 316B 7 30 01:15 that.txt
可读可写
#添加可执行权限
chomd +x that.txt
./that.txt
./that.txt: line 1: syntax error near unexpected token `Move'
./that.txt: line 1: ` (That is, CONTROL and LEFTARROW simultaneously.) Move the cur-'
~/repositories/linux-command
#就算修改名字后缀,也不影响执行情况。
mv that.txt that
~/repositories/linux-command
./that
./that: line 1: syntax error near unexpected token `Move'
./that: line 1: ` (That is, CONTROL and LEFTARROW simultaneously.) Move the cur-'
PATH=$PATH:$PWD
|
交互式文件编辑
nano
vim
还有其他交互式工具
Which & 环境变量$PATH
可以查找可执行文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
which app
echo $PATH #全局可执行文件
$PATH环境变量+ which命令
PATH=$PATH: $PWD
echo $PATH
:/Users/huahua/cmd2
$PATH:以:分割的文件夹列表
从哪里去找可执行文件(按照文件夹的顺序查找)
#把当前目录追加到PATH中
which: locate a program file in user's path % which my_echo
/Users/huahua/cmd2/my_echo
my_echo hello world! # Runs from anywhere Hello world!
|
interpreter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/env python3
Shebang: #! SharpBang or haSHbang # #
使用哪个解释器(interpreter)去解释/运行脚本
必须放在第一行,并使用绝对路径
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/php
% which python3
/Library/Frameworks/Python. framework/Versions/3.8/bin/python3
# 设置环境,并运行python3
#!/usr/bin/env python3
|
创建处理管道
下载数据
可以在一个github rozim/ChessData上下载测试数据
读取速度测试
1
2
3
4
5
6
|
#*.pgn以参数列表的形式返回所有匹配的文件 cat 1。pgn 2。pgn 。。 100。gpn /dev/nul1 是一个设备文件,它丢弃一切写入的数据但返回写入成功。
cat *.pgn > /dev/null
#cat即读又是写,如果不是null,读和写或影响只读速度,所以写到黑洞里
定向到null是一个黑洞:丢数据。通常来测试硬盘的读取速度
这将是文件处理速度的上限
|
重定向管道
重定向 :改变输入输出设备
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
标准输入<stdin>/标准输出<stdout>:控制台键盘/屏幕
echo hello > hellow.txt #redirect to a file
echo word >> hellow.txt #append to a file
cat < hellow.txt #use file as stdin <> read from file
#########管道:前一个命令的标注输出作为下一个程序的标准输入
man less | grep sim
man less | grep sim | grep That > that.txt # a multiple pipes
#..
yes:一直输出y
yes AMD YES!' # -直输出 AMD YES!
yes 'yes' > yes.txt
Usages: Skip user confirmation
yes | sudo apt-get install
|
创建处理管道
管道中其实是并行执行的。
搜索指定行
1
|
cat *.pgn | grep "Result"
|
最简单的版本
1
|
cat *.pgn | grep "Result" sort uniq -c
|
知识点:
- sort对输入文本进行排序
- uniq -C 统计每个独立行的出现次数仅对已排序文件有效
多进程处理任务
管道’|‘中的命令其实是并行执行的。
1
|
sleep 3 | sleep 5 | echo '8'
|
find
find :查找文件,打印匹配文件名到标准输出
xargs :将参数列表(文件名)分段并执行命令
-n 每次(最多)取几个参数
-P最多几个命令同时并行执行
最后再用一个mawk合并结果
stress & top & ps
stress
不是电脑自带的。
stress给系统增加负载或者进行压力测试
1
2
3
4
5
6
|
-t/--timeout N # N秒后超时
-c/--cpu N #孵化N个worker,死循环运行sqrt() / CPU
-i/--io N # 孵化N个worker,死循环运行sync() / IO
-m/--vm N # 孵化NTworker,死循环运行malloc()/free() / Memory
-d/--hdd N # 孵化N个worker,死循环运行write()/unlink() / Disk
stress --cpu 8 --io 4 --vm 2 - -vm-bytes 128M --timeout 10s
|
top
显示或更新排序过的进程信息(按照排名显示,显示有限)
ps
ps (Process Status)显示进程状态(所有进程)
1
2
3
|
ps aux # 显示所有进程,包括其他用户的
ps aux | grep Chrome | wc -l # 看一看Chrome起了多少个进程
ps aux | grep -i chrome | wc -l
|
Kill & killall
kill 终止或者给进程发信号
1
2
3
4
|
kill - signal_number/- signal_name PID
# 默认发送15/TERM (software termination signal)
kill PID
kill -9/-KILL PID #强力杀进程ه
|
Killall按照名字终止进程
1
2
3
4
|
和kill一样,但是用名字作为参数
#如果是大众命令就有可能误伤
killall bash / killall Python
killall -9 stress
|
command+c vs command+z
都能让程序“停止”
Ctrl+C 向进程发送SIGINT中断信号,通常进程会终止
Ctrl+Z 想进程发送SIGTSTP停止信号,把前台进程放入后台并挂起
模拟客户端
- linux:nc 模拟客户端连接
- windows:curl 模拟客户端连接
其他
-
iperf:网络性能测试工具。
-
traceroute:识别数据包到达主机的路径。
-
ss:获取有关socket的详细信息。
-
bmon:监控实时带宽。
-
dig:列出所有的DNS
-
iftop:带宽情况统计工具。
-
tcpdump:网络数据包捕获和分析工具,堪称Linux下网络神器。
-
ip:分配和配置网络参数。
-
nmcli:用于进行网络连接故障排查。
-
vnstat:监控当前网络流量和网络带宽情况。
-
1
2
|
jps //显示所有JAVA进程
jps -l //显示所有JAVA进程详情名
|