COMMANDS
- 记录道上遇到的命令
- 获取最新版本:Commands
Commands Memory
kafka
-
windows在kafka主目录下: .\bin\windows\kafka-server-start.bat .\config\server.properties
-
windows启动zookeeper: zkserver
-
启动服务器:bin/kafka-server-start.sh bin/config/server.properties
-
新建主题:bin/kafka-topics.sh -create --zookeeper localhost:2181 --replication-factor 1 -partitions 1 --topic topicTest
-
查看主题
- bin/kafka-topics.sh --list --zookeeper localhost:2181
- ./kafka-topics.sh --describe --topic event -bootstrap-server localhost:9092
-
启动生产者:bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topicTest
-
启动消费者(从头查询、消费、打印主题消息):
- bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topicTest --from-beginning --property print.key=true
- bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic matchResult --from-beginning --formatter kafka.tools.DefaultMessageFormatter --property print.key=true --property print.value=true --property key.deserializer=org.apache.kafka.common.serialzation.StringDeserializer --property value.deserializer=org.apache.kafka.common.serialization.LongDeserializer
-
查询主题内某分区偏移量:bin/kafka-run-class.sh kafka.tools.GetOffsetShell --brokerlist localhost:9092阿 --topic event --time -1 --partitions 0(-1表示最大offset,-2表示最小offset)
-
删除主题:bin/kafka-topics.sh --delete --topic matchResult --zookeeper localhost:2181
-
删除主题的数据:
bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name test --alter --add-config retention.ms=3000 //修改保留时间为三秒,但不是修改后三秒就马上删掉,kafka是采用轮训的方式,轮训到这个主题发现三秒前的数据都是删掉。时间由自己在server.properties里面设置,设置见下面。 bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name test --alter --delete-config retention.ms
zookeeper
- 启动zookeeper: ./zkServer.sh start (停止用stop)
- 启动clli:./zkCli.sh -server 192.168.1.109
- 查看是否运行:
- ps -aux grep | 'zookeeper'
- ss -ntpl | grep 2181
- ./zkServer.sh status
- 连接zookeeper服务进入zookeeper客户端:./zkCli.sh -server 127.0.0.1:2181(退出用quit)
- 进入zookeeper客户端后:
- 创建非顺序持久化节点:create /nodename data_nodename
- 创建临时节点: create -e /tmp tmp-data
- 创建顺序节点:create -s /test test-data
- 删除空节点:delete /tmp
- 删除非空节点:deleteall /nodename
- 查看节点状态:stat /storm 或者 ls /storm
- 查看详细报错信息:./zkServer.sh start-foreground
Storm
-
修改ui端口:conf/storm.yaml 中添加:ui.port: 8081
-
查看storm是否运行:jps(输出java程序的进程)
-
本地访问服务器端口:ssh -L localhost:8081:192.168.128.4:8081 root@123.186.58.253 // -N -f -L
-
storm-starter项目
- 先在IDEA里build成module
mvn clean install -DskipTests=true mvn package 生成jar包 storm jar target/storm-starter-*.jar org.apache.storm.starter.SimpleMatchTopology SMT 提交jar包到storm storm jar target/storm-2021-11-13.jar org.sjtu.swhua.storm.MatchAlgorithm.ClusterMatchTopology CMT_W12D8r3s8b20M100_11150240 storm local target/storm-starter-*.jar org.apache.storm.starter.ExclamationTopology EXCT 以local模式运行,直接在命令行看到输出 mvn test -
查看所设置的或默认的参数:storm remoteconfvalue conf-name, 第三个参数是参数名
-
运行时修改线程、进程个数:storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
-
No slot available for topology:storm admin remove_corrupt_topologies,删除data目录下的文件!
ubuntu18
- 快捷键
- 打开终端:Ctrl+Alt+T
- 移动光标到行开头:ctrl+A
- 移动光标到行结尾:ctrl+E
- 删除或剪切光标之前的内容:ctrl+U
- 删除或剪切光标之后的内容:ctrl+K
- 粘贴剪切的内容:ctrl+Y
- 搜索历史命令:ctrl+R
- 退出当前终端:ctrl+D
- 暂停/恢复屏幕输出:ctrl+S/Q
- 死机后强制重启:(Alt+SysRq )+ r,e,i,s,u,b
-
查看磁盘使用情况: df -hl sudo fdisk -l
-
ssh连云主机: ssh -p 12345 root@123.186.58.253
-
查看端口占用:
- lsof -i:8888
- netstat -ap | grep 8080
- netstat -an | grep 8080
- netstat -antup
-
杀死进程:kill PID
-
解压tar.gz 文件:tar -zxvf name.tar.gz
-
wget 下载文件:wget -O 新文件名 url
-
重命名、移动文件:mv old_name new_name
-
删除:
- 删除非空目录:rm -r 目录名
- 删除文件:rm 文件名
-
修改环境变量:
- vim /etc/profile
- export STORM_HOME=/home/storm-2.0.0 export PATH=STORM_HOME/bin
- source /etc/profile
- 有时候修改“~/.bashrc”这个文件而不是“/etc/profile”才有效
-
查看权限
- ll
- 给文件拥有者赋权:chmod u=rwx 文件名
- 给文件同组者赋权:chmod g=rwx 文件名
- 给其他人赋权:chmod o=rwx 文件名
- chmod o=r,g=r,u=rwx 文件名
- chmod 744 *(给当前目录下所有文件赋权为744)
-
文件复制:
- cp fileName ./
- cp -r dir1 ../ 转移文件夹
-
文件属性查看:stat *
-
输出重定向: - 覆盖输出:命令 &> 文件 - 追加输出:命令 &>> 文件 - 正确输出到文件1,错误输出到文件2:命令 >>文件1 2>>文件2
-
找出大于100MB的文件:find ./ -size +100M
-
查看大文本文件(-f表示实时查看)
- 最后1000行:tail -f -n 1000 fileName
- 前面1000行:head -n 1000 fileName
- 显示1000行之后的:tail -n +3000 fileName
- 显示3000-3999行:cat filename | tail -n +3000 | head -n 1000
- 显示5-10行:sed -n '5,10p' fileName
-
在一个端口上启动一个Socket server并且可以手动输入数据:nc -l 9000
-
查找单词出现次数:给word加单引号就可以查找带空格的字符串
- more fileName | grep -o word | wc -l
- cat fileName | grep -o word | wc -l
- grep -o word fileName | wc -l
-
查找含有某个字符串的一行:cat fileName | grep Sorted | awk '{print $6}'
-
求行数:wc -l fileName
-
输出所有含有某个字符串的行: awk '7=="13700" && 6 =="Pac" {print $0}' fileName
-
输出第7000行:awk 'NR==7000{print}' fileName
-
查看和修改主机名称
- hostname
- uname -n
- sudo vim /etc/hostname
-
查看当前目录文件大小:du -h --max-depth=1
-
查当前用户所在的组:groups; id
-
软链接:sudo ln -s /usr/bin/python3 /usr/bin/python 输入python相当于输入python3
-
关闭防火墙
- sudo systemctl stop firewalld
- sudo systemctl disable firewalld
-
清理内存缓存:echo 1 > /proc/sys/vm/drop_caches
-
查询物理CPU个数:
- grep 'physical id' /proc/cpuinfo | sort -u
- cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
-
ssh 免密登录
service ssh restart ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # generate ssh key eval $(ssh-agent -s) # verify ssh-agent ssh-agent bash ssh-add ~/.ssh/id_rsa # add key to ssh-agent ssh-copy-id -i ~/.ssh/id_rsa.pub root@ecs-01-ip (有时要在用户名前加-p) ssh -vvv localhost -
ssh传文件:scp -r /etc/hosts root@ecs-02-pubip:/etc
-
设置命令别名:
alias cs='cat speed | grep "Mer"' alias ts='tmux attach -t storm' -
改变文件或目录所属的用户和用户组:chown root: root /root
-
查找文件创建时间
stat FileName # 得到Inode: 786519 或 ls -i FileName df -h # 得到当前文件所在的Filesystem /dev/vda4 debugfs -R'stat <786519>' /dev/vda4 # crtime -
创建新用户:
sudo useradd -r -m -s /bin/bash username sudo passwd username # 修改密码 sudo chmod +w /etc/sudoers sudo vim /etc/sudoers # 添加 username ALL=(ALL:ALL) ALL sudo chmod -w /etc/sudoers su - username # 转为以该用户登录,切换用户 sudo userdel username sudo rm -rf /home/username # 删除或者注释掉/etc/sudoers中关于要删除用户的配置 -
关机:shutdown
-
CPU
- 启动top命令后按“1”,可以看到各个CPU的情况
- sudo apt-get install cpufrequtils
- 查看cpu类型、当前频率、支持频率、运行模式:cpufreq-info
- 设置某个核(5)以最大频率运行:sudo cpufreq-set -c 5 -g performance
- 设置某个核(3)的频率:sudo cpufreq-set -c 3 -f 3G
- 设置某个核(2)的最低频率:sudo cpufreq-set -c 5 -d 3.7G
- 设置某个核(2)的最高频率:sudo cpufreq-set -c 5 -u 4.9G
- 指定进程运行在某个特定的CPU上:taskset -pc 3 21184 (也可以吧21184换成可执行文件,把p去掉)
- 查询CPU的核数:
cat /proc/cpuinfo| grep "cpu cores"| uniq - 查询逻辑cpu个数:cat /proc/cpuinfo| grep "processor"| wc -l
-
磁盘分区与挂载
- 查看未分区硬盘:sudo fdisk -lsudo sys
- 对硬盘进行分区:sudo fdisk /dev/sdb,根据提示输入字母,输入w保存并退出
- 格式化为ext4文件系统:sudo mkfs -t ext4 /dev/sdb
- 挂载到mnt:sudo mount -t ext4 /dev/sdb /mnt
- 查看UUID:blkid or lsblk -f
- 设置自动挂载:vim /etc/fstab,加一行/dev/sdb /mnt ext4 defaults 0 0
-
打开端口:
- sudo ufw enable 打开防火墙
- sudo ufw allow 80
-
- jupyter notebook --ip=0.0.0.0 --port=8080
- 加 -NotebookApp.token= 设置免密登录
- jupyter notebook --no-browser --ip=0.0.0.0 --port=8080 --allow-root
- ssh -L [本地IP]:本地Port:远程IP:远程Port root@xxx,如:ssh -L 7080:127.0.0.1:5600 swh@192.168.1.160
-
计算文件个数:
- 当前目录不包括子文件夹的文件数:ls -l |grep "^-"|wc -l
- 当前目录包括子文件夹的文件数:ls -lR|grep "^-"|wc -l
- 文件夹个数(包括子文件夹):ls -lR|grep "^d"|wc -l
-
查询操作系统版本:cat /proc/version; uname -a; lsb_release -a; cat /etc/redhat-release
-
查看系统代号:lsb_release -a; 查看源:cat /etc/apt/sources.list
-
安装deb包:sudo dpkg -i package.deb (依赖问题安装失败:sudo apt-get install -f )
-
查看系统支持的指令集:cat /proc/cpuinfo | grep "avx”
-
禁止系统自动休眠
- sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
systemctl status sleep.target
-
压缩:
zip -r test.zip test/ -
是否开启超线程
cat /proc/cpuinfo | grep "physical id" | sort | uniq # 物理CPU个数 a cat /proc/cpuinfo | grep "cores" | uniq # 物理CPU的逻辑核数 b cat /proc/cpuinfo | grep "processor" | wc -l # 系统线程数 c # c = a * b 则没开启超线程,c=2ab则开启了 # 或者:lscpu显示每个核的线程数为2则开启了超线程
vim
- 移动光标至行首: HOME or 0 or shift+6
- 移动光标至行尾: END or shift+4,“2$”表示下一行的行尾
- 至文件最后一行:G
- 至文件第一行:1G or gg
- 至第28行::28+回车 or 28G
- 删除当前行:dd;删除以当前行开始的n行:ndd
- 删除当前字符:x
- 删除光标之后的该行部分:d$
- 复制一行:yy;复制多行:nyy
- 粘贴:p
- 显示行号::set number + 回车
- 在文件中查找内容为word的字符串,向下查找:/word;向上查找:?word
docker
- 关闭容器: docker stop ID docker kill ID
- 删除容器、镜像:
- docker rm ID
- docker container rm ID
- docker rmi imageID
- 启动容器: docker start ID
- 进入容器: docker exec -it ID /bin/bash
- 退出容器保持容器运行:ctrl+PQ
mysql
- 登录mysql: mysql -uroot -p
- 查看表的列名: desc tableName;
tmux
- 查看输出:ctrl+b+[,pageUp、pageDown, Esc 退出
- 删除当前面板:Ctrl+b+x
- 将当前面板分为左右两块:Ctrl+b+%
- 将当前面板分为上下两块:Ctrl+b+"
- 调整当前面板大小:Ctrl+b+Ctrl+方向键
Notion
- 复制粘贴 = alt +鼠标点击并拖动
- 选中多个模块 = shift + alt + 鼠标点击
- 选中某个模块到某个模块之间的所有模块 = shift + 鼠标点击
- 移动到页面最下方 = ctrl A + ctrl A(选中整个页面) + ctrl PgDn
- 打开所有下拉框 = ctrl A + ctrl A(选中整个页面) + 鼠标点击某个下拉框
- 返回上/下一次访问的页:ctrl + [ /]
- 暗模式: ctrl+shift+L
前端
- 本地搭建http服务器
- npm install http-server -g
- http-server -c-1
github
-
当前空目录绑定远程仓库
git init git remote add origin [git@github.com](mailto:git@github.com):shiwanghua/MatchAlgorithmUsingStorm.git git pull origin main # 新建仓库后远程默认有个main分支,这行命令可以把远程文件拿下来,本地目录里不得有同目录远程文件 git branch # 查看本地分支 git branch -m master main # 本地默认是master分支,重命名改成和远程一样的main分支 git branch --set-upstream-to=origin/main main # 将远程的main分支(第一个)与本地的main(第二个)分支关联,之后就可以 git pull 了 git push -u origin main # 指明把本地代码提交到远程main分支,会把本地的main分支和远程的main分支关联起来,之后就可以 git push 了 -
当前非空目录绑定远程仓库
git init # 可能需要清除冲突文件比如.gitignore,然后git pull origin main git add . git commit -m "Original codes" git remote add origin git@[github.com](mailto:git@github.com):shiwanghua/MatchAlgorithmUsingStorm.git git branch -m master main git pull --rebase origin main #拉取远程仓库所有内容,并将所有非空文件提交 # 可能需要 git rebase --continue 可能要加 --allow-unrelated-histories git push origin main # 此后还不能直接用 git push git push --set-upstream origin main -
推送本地分支(初始文件),并建立与远程上游的跟踪
- git push --set-upstream origin master
- git init、git remote add后,当前没分支,也就没有对应的上游分支,即远程新建的仓库只有main分支,于是运行这行命令后会给远程新建一个master分支,并把本地与远程master分支绑定
-
查看分支:git branch
-
转到main分支下:git checkout main
-
新建本地main分支并转到main分支下:git checkout -b main 或 git branch main + git checkout main
-
删除远程的master分支,注意冒号前有一个空格!
- git push origin :master
- git push origin --delete master
-
删除本地main分支:git branch -d main
-
合并dev分支到当前分支:git merge dev
-
撤销commit:
- 一次:git reset --soft HEAD^
- 三次:git reset --soft HEAD~3
-
撤销commit和add:git reset --mixed HEAD^ 或 git reset HEAD^,git reset HEAD
-
删除工作空间改动代码,撤销commit 和 add:git reset --hard HEAD^ , git reset --hard master
-
删除本地缓存,改变成未track的状态:git rm -r --cached .
-
查看本地跟踪状态:git status
-
查看当前关联的远程仓库(可能不存在):git remote -v
-
重装系统后把以前的项目文件夹搬过来,上传公钥后不能git pull,报错说没有访问权限:ssh-keyscan -H github.com >> ~/.ssh/known_hosts
-
丢弃本地修改的文件
- 未使用git add 缓存代码
- 单个文件:git checkout -- filepathname
- 放弃所有文件:git checkout .
- 使用了git add 缓存代码
- git reset HEAD filepathname
- git reset HEAD .
- 此时只撤销了 git add,还要用git checkout
- 使用了 git commit 提交代码
- git reset --hard HEAD^
- git reset --hard commitId
- 查看提交历史和commitId:git log
- 未使用git add 缓存代码
-
现场
- 保存工作现场:(不提交又想保存时)git stash
- 查看:git stash list
- 恢复:git stash apply
- 删除藏匿的工作现场:git stash drop
- 恢复的同时删除:git stash pop
- 恢复到指定的工作现场:git stash apply stash@{0}
-
git stash pop 遇到冲突错误后,进入文件删除新的更改,保存 stash 恢复的更改,直接 add commit 后再 git stash pop 就成功了
-
从版本库中删除文件:git rm test.txt
-
生成秘钥SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
-
克隆:git clone git@github.com:shiwanghua/MyPreviousCodes-D123-.git
-
初始化
- git config --global user.name "Your Name"
- git config --global user.email "email@example.com"
- git config --global init.defaultBranch main
-
换行符修改:git config --global core.autocrlf true #true的位置放你想使autocrlf成为的结果,true,false或者input
-
查看图片:fim -a filePath
-
#git remote set-url origin https://github.com/shiwanghua/HEM.git 设置远程仓库地址 git remote show origin git remote -v git remote rm origin # 删除远程 Git 仓库 git remote add origin git@[github.com](mailto:git@github.com):shiwanghua/BIOP.git # 添加远程 Git 仓库 git push --set-upstream origin main # git push -u origin main -
几个月没用,突然无法pull了:
- error: 权限不足,无法在仓库对象库 .git/objects 中添加对象
- cd .git/objects/; sudo chown -R swh * 其中swh为用户名
-
重命名分支:
git branch -m oldName newName # git pull origin newName git push origin newName # 将重命名后的分支推送到远程 git push --delete origin oldName # 删除远程的旧分支 git push --set-upstream origin newName -
提交新增、修改、删除文件:git add -A
Maven
-
跳过checkstyle进行mvn编译:mvn clean install -Dcheckstyle.skip=true -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类
-
打包:mvn package
-
新建一个maven-kafka项目
mvn archetype:generate \ -DarchetypeGroupId=org.apache.kafka \ -DarchetypeArtifactId=streams-quickstart-java \ -DarchetypeVersion=2.7.0 \ -DgroupId=streams.examples \ -DartifactId=streams.examples \ (项目文件夹名) -Dversion=0.1 \ -Dpackage=myapps (包名) -
项目根目录下运行一个java文件:mvn exec:java -Dexec.mainClass=swhua.Pipe 其中swhua是包名,Pipe是文件名
-
新建一个maven-scala-flink项目
mvn archetype:generate \ -DarchetypeGroupId=org.apache.flink \ -DarchetypeArtifactId=flink-quickstart-scala \ -DarchetypeVersion=1.12.2 \ -DgroupId=org.sjtu.swhua.flink \ -DartifactId=flink-scala-project \ (项目文件夹名) -Dversion=0.1 \ -Dpackage=org.sjtu.swhua.flink.quickstart \ (包名) -DinteractiveMode=false -
新建一个maven-java-flink项目
mvn archetype:generate \ -DarchetypeGroupId=org.apache.flink \ -DarchetypeArtifactId=flink-quickstart-java \ -DarchetypeVersion=1.11.0 \ -DgroupId=org.sjtu.swhua.flink \ -DartifactId=flink-scala-project \ (项目文件夹名,唯一标识符) -Dversion=0.1 \ -Dpackage=org.sjtu.swhua.flink.quickstart \ (包名) -DinteractiveMode=false or curl https://flink.apache.org/q/quickstart.sh | bash
Windows
- hosts路径:C:\WINDOWS\system32\drivers\etc
- 剪切板快捷键:win+V
- 查看电脑配置:win+R, 输入msinfo32
- 安装双系统
-
在windows的Linux terminal中运行:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
-
使用GRUB2来引导开机(选择系统),以管理员权限运行cmd,输入:bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
-
Ubuntu 18.04+Win10 系统时间不一致,在Ubuntu内打开终端,输入:timedatectl set-local-rtc 1 --adjust-system-clock
-
- 查占用端口的进程:netstat -aon|findstr 8080
- 查进程运行的程序:tasklist|findstr 25044
GPU
- 查看GPU型号:lspci | grep -i nvidia,如未显示,将后四位输入pci-ids.ucw.cz/mods/PC/10d…
- 查看GPU版本信息和运行状态:nvidia-smi
- 查显存:lspci | grep "VGA"; lspci -vs 03:00.0
cmake
- 头部
- cmake_minimum_required(VERSION 3.6)
- project(Project-CodeDemo)
- 指定可执行文件的输出目录:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ./cppFiles/) - O3优化:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++0x") - 加入源代码目录:
aux_source_directory(./cppFiles/ cpp_LIST) - 根据目录下的代码文件生成可执行文件:
add_executable(run ${h_LIST} ${cpp_LIST})
集群命令
- parallel-ssh -h servers.txt --outdir /tmp/uptime uptime
- 复制到远程:parallel-scp -h servers.txt /etc/hosts /tmp/hosts
- 复制到本地/tmp,每个本地拷贝名为 hosts_file:parallel-slurp -h servers.txt -L /tmp/hosts /etc/hosts hosts_file
mysql
sudo mysql -uroot -p- 新增用户:use mysql;CREATE USER 'swh'@'%' IDENTIFIED BY '123';
- 授权:GRANT all ON . TO 'swh'@'%';
FLUSH PRIVILEGES; - 查看监听端口:show global variables like 'port'