ubuntu、Git、storm、zookeeper、kafka、docker等软件的客户端命令

258 阅读6分钟

COMMANDS

  • 记录道上遇到的命令
  • 获取最新版本:Commands

Commands Memory

kafka

  1. windows在kafka主目录下: .\bin\windows\kafka-server-start.bat .\config\server.properties

  2. windows启动zookeeper: zkserver

  3. 启动服务器:bin/kafka-server-start.sh bin/config/server.properties

  4. 新建主题:bin/kafka-topics.sh -create --zookeeper localhost:2181 --replication-factor 1 -partitions 1 --topic topicTest

  5. 查看主题

    • bin/kafka-topics.sh --list --zookeeper localhost:2181
    • ./kafka-topics.sh --describe --topic event -bootstrap-server localhost:9092
  6. 启动生产者:bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topicTest

  7. 启动消费者(从头查询、消费、打印主题消息):

    • 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
  8. 查询主题内某分区偏移量:bin/kafka-run-class.sh kafka.tools.GetOffsetShell --brokerlist localhost:9092阿 --topic event --time -1 --partitions 0(-1表示最大offset,-2表示最小offset)

  9. 删除主题:bin/kafka-topics.sh --delete --topic matchResult --zookeeper localhost:2181

  10. 删除主题的数据:

    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

  1. 启动zookeeper: ./zkServer.sh start (停止用stop)
  2. 启动clli:./zkCli.sh -server 192.168.1.109
  3. 查看是否运行:
    • ps -aux grep | 'zookeeper'
    • ss -ntpl | grep 2181
    • ./zkServer.sh status
  4. 连接zookeeper服务进入zookeeper客户端:./zkCli.sh -server 127.0.0.1:2181(退出用quit)
  5. 进入zookeeper客户端后:
    • 创建非顺序持久化节点:create /nodename data_nodename
    • 创建临时节点: create -e /tmp tmp-data
    • 创建顺序节点:create -s /test test-data
    • 删除空节点:delete /tmp
    • 删除非空节点:deleteall /nodename
    • 查看节点状态:stat /storm 或者 ls /storm
  6. 查看详细报错信息:./zkServer.sh start-foreground

Storm

  1. 修改ui端口:conf/storm.yaml 中添加:ui.port: 8081

  2. 查看storm是否运行:jps(输出java程序的进程)

  3. 本地访问服务器端口:ssh -L localhost:8081:192.168.128.4:8081 root@123.186.58.253 // -N -f -L

  4. 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
    
  5. 查看所设置的或默认的参数:storm remoteconfvalue conf-name, 第三个参数是参数名

  6. 运行时修改线程、进程个数:storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10

  7. 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
  1. 查看磁盘使用情况: df -hl sudo fdisk -l

  2. ssh连云主机: ssh -p 12345 root@123.186.58.253

  3. 查看端口占用:

    • lsof -i:8888
    • netstat -ap | grep 8080
    • netstat -an | grep 8080
    • netstat -antup
  4. 杀死进程:kill PID

  5. 解压tar.gz 文件:tar -zxvf name.tar.gz

  6. wget 下载文件:wget -O 新文件名 url

  7. 重命名、移动文件:mv old_name new_name

  8. 删除:

    • 删除非空目录:rm -r 目录名
    • 删除文件:rm 文件名
  9. 修改环境变量:

    • vim /etc/profile
    • export STORM_HOME=/home/storm-2.0.0 export PATH=PATH:PATH:STORM_HOME/bin
    • source /etc/profile
    • 有时候修改“~/.bashrc”这个文件而不是“/etc/profile”才有效
  10. 查看权限

    • ll
    • 给文件拥有者赋权:chmod u=rwx 文件名
    • 给文件同组者赋权:chmod g=rwx 文件名
    • 给其他人赋权:chmod o=rwx 文件名
    • chmod o=r,g=r,u=rwx 文件名
    • chmod 744 *(给当前目录下所有文件赋权为744)
  11. 文件复制:

    • cp fileName ./
    • cp -r dir1 ../ 转移文件夹
  12. 文件属性查看:stat *

  13. 输出重定向: - 覆盖输出:命令 &> 文件 - 追加输出:命令 &>> 文件 - 正确输出到文件1,错误输出到文件2:命令 >>文件1 2>>文件2

  14. 找出大于100MB的文件:find ./ -size +100M

  15. 查看大文本文件(-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
  16. 在一个端口上启动一个Socket server并且可以手动输入数据:nc -l 9000

  17. 查找单词出现次数:给word加单引号就可以查找带空格的字符串

    • more fileName | grep -o word | wc -l
    • cat fileName | grep -o word | wc -l
    • grep -o word fileName | wc -l
  18. 查找含有某个字符串的一行:cat fileName | grep Sorted | awk '{print $6}'

  19. 求行数:wc -l fileName

  20. 输出所有含有某个字符串的行: awk '7=="13700" && 6 =="Pac" {print $0}' fileName

  21. 输出第7000行:awk 'NR==7000{print}' fileName

  22. 查看和修改主机名称

    • hostname
    • uname -n
    • sudo vim /etc/hostname
  23. 查看当前目录文件大小:du -h --max-depth=1

  24. 查当前用户所在的组:groups; id

  25. 软链接:sudo ln -s /usr/bin/python3 /usr/bin/python 输入python相当于输入python3

  26. 关闭防火墙

    • sudo systemctl stop firewalld
    • sudo systemctl disable firewalld
  27. 清理内存缓存:echo 1 > /proc/sys/vm/drop_caches

  28. 查询物理CPU个数:

    • grep 'physical id' /proc/cpuinfo | sort -u
    • cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
  29. 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
    

    Back up

  30. ssh传文件:scp -r /etc/hosts root@ecs-02-pubip:/etc

  31. 设置命令别名:

    alias cs='cat speed | grep "Mer"'
    alias ts='tmux attach -t storm'
    
  32. 改变文件或目录所属的用户和用户组:chown root: root /root

  33. 查找文件创建时间

    stat FileName # 得到Inode: 786519   或 ls -i FileName
    df -h         # 得到当前文件所在的Filesystem /dev/vda4
    debugfs -R'stat <786519>' /dev/vda4 # crtime
    
  34. 创建新用户:

    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中关于要删除用户的配置
    
  35. 关机:shutdown

  36. CPU

    1. 启动top命令后按“1”,可以看到各个CPU的情况
    2. sudo apt-get install cpufrequtils
    3. 查看cpu类型、当前频率、支持频率、运行模式:cpufreq-info
    4. 设置某个核(5)以最大频率运行:sudo cpufreq-set -c 5 -g performance
    5. 设置某个核(3)的频率:sudo cpufreq-set -c 3 -f 3G
    6. 设置某个核(2)的最低频率:sudo cpufreq-set -c 5 -d 3.7G
    7. 设置某个核(2)的最高频率:sudo cpufreq-set -c 5 -u 4.9G
    8. 指定进程运行在某个特定的CPU上:taskset -pc 3 21184 (也可以吧21184换成可执行文件,把p去掉)
    9. 查询CPU的核数:cat /proc/cpuinfo| grep "cpu cores"| uniq
    10. 查询逻辑cpu个数:cat /proc/cpuinfo| grep "processor"| wc -l
  37. 磁盘分区与挂载

    1. 查看未分区硬盘:sudo fdisk -lsudo sys
    2. 对硬盘进行分区:sudo fdisk /dev/sdb,根据提示输入字母,输入w保存并退出
    3. 格式化为ext4文件系统:sudo mkfs -t ext4 /dev/sdb
    4. 挂载到mnt:sudo mount -t ext4 /dev/sdb /mnt
    5. 查看UUID:blkid or lsblk -f
    6. 设置自动挂载:vim /etc/fstab,加一行/dev/sdb /mnt ext4 defaults 0 0
  38. 打开端口:

    1. sudo ufw enable 打开防火墙
    2. sudo ufw allow 80
  39. 启用jupyter notebook转发:

    1. jupyter notebook --ip=0.0.0.0 --port=8080
    2. -NotebookApp.token= 设置免密登录
    3. jupyter notebook --no-browser --ip=0.0.0.0 --port=8080 --allow-root
    4. ssh -L [本地IP]:本地Port:远程IP:远程Port root@xxx,如:ssh -L 7080:127.0.0.1:5600 swh@192.168.1.160
  40. 计算文件个数:

    1. 当前目录不包括子文件夹的文件数:ls -l |grep "^-"|wc -l
    2. 当前目录包括子文件夹的文件数:ls -lR|grep "^-"|wc -l
    3. 文件夹个数(包括子文件夹):ls -lR|grep "^d"|wc -l
  41. 查询操作系统版本:cat /proc/version; uname -a; lsb_release -a; cat /etc/redhat-release

  42. 查看系统代号:lsb_release -a; 查看源:cat /etc/apt/sources.list

  43. 安装deb包:sudo dpkg -i package.deb (依赖问题安装失败:sudo apt-get install -f )

  44. 查看系统支持的指令集:cat /proc/cpuinfo | grep "avx”

  45. 禁止系统自动休眠

    1. sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    2. systemctl status sleep.target
  46. 压缩:zip -r test.zip test/

  47. 是否开启超线程

    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

  1. 移动光标至行首: HOME or 0 or shift+6
  2. 移动光标至行尾: END or shift+4,“2$”表示下一行的行尾
  3. 至文件最后一行:G
  4. 至文件第一行:1G or gg
  5. 至第28行::28+回车 or 28G
  6. 删除当前行:dd;删除以当前行开始的n行:ndd
  7. 删除当前字符:x
  8. 删除光标之后的该行部分:d$
  9. 复制一行:yy;复制多行:nyy
  10. 粘贴:p
  11. 显示行号::set number + 回车
  12. 在文件中查找内容为word的字符串,向下查找:/word;向上查找:?word

docker

  1. 关闭容器: docker stop ID docker kill ID
  2. 删除容器、镜像:
    • docker rm ID
    • docker container rm ID
    • docker rmi imageID
  3. 启动容器: docker start ID
  4. 进入容器: docker exec -it ID /bin/bash
  5. 退出容器保持容器运行:ctrl+PQ

mysql

  1. 登录mysql: mysql -uroot -p
  2. 查看表的列名: desc tableName;

tmux

  1. 查看输出:ctrl+b+[,pageUp、pageDown, Esc 退出
  2. 删除当前面板:Ctrl+b+x
  3. 将当前面板分为左右两块:Ctrl+b+%
  4. 将当前面板分为上下两块:Ctrl+b+"
  5. 调整当前面板大小:Ctrl+b+Ctrl+方向键

Notion

  1. 复制粘贴 = alt +鼠标点击并拖动
  2. 选中多个模块 = shift + alt + 鼠标点击
  3. 选中某个模块到某个模块之间的所有模块 = shift + 鼠标点击
  4. 移动到页面最下方 = ctrl A + ctrl A(选中整个页面) + ctrl PgDn
  5. 打开所有下拉框 = ctrl A + ctrl A(选中整个页面) + 鼠标点击某个下拉框
  6. 返回上/下一次访问的页:ctrl + [ /]
  7. 暗模式: ctrl+shift+L

前端

  1. 本地搭建http服务器
    1. npm install http-server -g
    2. http-server -c-1

github

  1. 当前目录绑定远程仓库

    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 了
    
  2. 当前非目录绑定远程仓库

    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
    
  3. 推送本地分支(初始文件),并建立与远程上游的跟踪

    • git push --set-upstream origin master
    • git init、git remote add后,当前没分支,也就没有对应的上游分支,即远程新建的仓库只有main分支,于是运行这行命令后会给远程新建一个master分支,并把本地与远程master分支绑定
  4. 查看分支:git branch

  5. 转到main分支下:git checkout main

  6. 新建本地main分支并转到main分支下:git checkout -b main 或 git branch main + git checkout main

  7. 删除远程的master分支,注意冒号前有一个空格!

    • git push origin :master
    • git push origin --delete master
  8. 删除本地main分支:git branch -d main

  9. 合并dev分支到当前分支:git merge dev

  10. 撤销commit:

    • 一次:git reset --soft HEAD^
    • 三次:git reset --soft HEAD~3
  11. 撤销commit和add:git reset --mixed HEAD^ 或 git reset HEAD^,git reset HEAD

  12. 删除工作空间改动代码,撤销commit 和 add:git reset --hard HEAD^ , git reset --hard master

  13. 删除本地缓存,改变成未track的状态:git rm -r --cached .

  14. 查看本地跟踪状态:git status

  15. 查看当前关联的远程仓库(可能不存在):git remote -v

  16. 重装系统后把以前的项目文件夹搬过来,上传公钥后不能git pull,报错说没有访问权限:ssh-keyscan -H github.com >> ~/.ssh/known_hosts

  17. 丢弃本地修改的文件

    • 未使用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
  18. 现场

    • 保存工作现场:(不提交又想保存时)git stash
    • 查看:git stash list
    • 恢复:git stash apply
    • 删除藏匿的工作现场:git stash drop
    • 恢复的同时删除:git stash pop
    • 恢复到指定的工作现场:git stash apply stash@{0}
  19. git stash pop 遇到冲突错误后,进入文件删除新的更改,保存 stash 恢复的更改,直接 add commit 后再 git stash pop 就成功了

  20. 从版本库中删除文件:git rm test.txt

  21. 生成秘钥SSH Key:ssh-keygen -t rsa -C "youremail@example.com"

  22. 克隆:git clone git@github.com:shiwanghua/MyPreviousCodes-D123-.git

  23. 初始化

    • git config --global user.name "Your Name"
    • git config --global user.email "email@example.com"
    • git config --global init.defaultBranch main
  24. 换行符修改:git config --global core.autocrlf true #true的位置放你想使autocrlf成为的结果,true,false或者input

  25. 查看图片:fim -a filePath

  26. 重命名仓库后:

    #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
    
  27. 几个月没用,突然无法pull了:

    • error: 权限不足,无法在仓库对象库 .git/objects 中添加对象
    • cd .git/objects/; sudo chown -R swh * 其中swh为用户名
  28. 重命名分支:

    git branch -m oldName  newName
    # git pull origin newName 
    git push origin newName # 将重命名后的分支推送到远程
    git push --delete origin oldName # 删除远程的旧分支
    git push --set-upstream origin newName 
    
  29. 提交新增、修改、删除文件:git add -A

Maven

  1. 跳过checkstyle进行mvn编译:mvn clean install -Dcheckstyle.skip=true -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类

  2. 打包:mvn package

  3. 新建一个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    (包名)
    
  4. 项目根目录下运行一个java文件:mvn exec:java -Dexec.mainClass=swhua.Pipe 其中swhua是包名,Pipe是文件名

  5. 新建一个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
    
  6. 新建一个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

  1. hosts路径:C:\WINDOWS\system32\drivers\etc
  2. 剪切板快捷键:win+V
  3. 查看电脑配置:win+R, 输入msinfo32
  4. 安装双系统
    1. 在windows的Linux terminal中运行:

      sudo add-apt-repository ppa:yannubuntu/boot-repair

      sudo apt-get update

      sudo apt-get install -y boot-repair && boot-repair

    2. 使用GRUB2来引导开机(选择系统),以管理员权限运行cmd,输入:bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

    3. Ubuntu 18.04+Win10 系统时间不一致,在Ubuntu内打开终端,输入:timedatectl set-local-rtc 1 --adjust-system-clock

  5. 查占用端口的进程:netstat -aon|findstr 8080
  6. 查进程运行的程序:tasklist|findstr 25044

GPU

  1. 查看GPU型号:lspci | grep -i nvidia,如未显示,将后四位输入pci-ids.ucw.cz/mods/PC/10d…
  2. 查看GPU版本信息和运行状态:nvidia-smi
  3. 查显存:lspci | grep "VGA"; lspci -vs 03:00.0

cmake

  1. 头部
    • cmake_minimum_required(VERSION 3.6)
    • project(Project-CodeDemo)
  2. 指定可执行文件的输出目录:set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ./cppFiles/)
  3. O3优化:SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -std=c++0x")
  4. 加入源代码目录:aux_source_directory(./cppFiles/ cpp_LIST)
  5. 根据目录下的代码文件生成可执行文件:add_executable(run ${h_LIST} ${cpp_LIST})

集群命令

  1. parallel-ssh -h servers.txt --outdir /tmp/uptime uptime
  2. 复制到远程:parallel-scp -h servers.txt /etc/hosts /tmp/hosts
  3. 复制到本地/tmp,每个本地拷贝名为 hosts_file:parallel-slurp -h servers.txt -L /tmp/hosts /etc/hosts hosts_file

mysql

  1. sudo mysql -uroot -p
  2. 新增用户:use mysql;CREATE USER 'swh'@'%' IDENTIFIED BY '123';
  3. 授权:GRANT all ON . TO 'swh'@'%';FLUSH PRIVILEGES;
  4. 查看监听端口:show global variables like 'port'

Thank you very much for your reward !

在这里插入图片描述