美文网首页
指令随笔

指令随笔

作者: 大大大大大大大熊 | 来源:发表于2018-08-24 10:28 被阅读0次

linux

修改shell脚本的编码

在window下编写的shell脚本编码为dos,在linux环境下不能直接使用

:set ff  #查看当前文本的模式类型,一般为dos,unix
:set ff=dos #设置为dos模式
:set ff=unix#设置为unix模式

>/dev/null 2>&1 & 指令解释

> /dev/null : 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向(等同于)标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

含义

  1. > 代表重定向到哪里,例如:echo "123" > /home/123.txt
  2. 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
  3. 2 表示stderr标准错误
  4. & 表示等同于的意思,2>&1,表示2的输出重定向等同于1
  5. 尾部 & 用途:在后台运行,当关闭了ssh终端,程序也会关闭
    nohup用途:不挂断地运行命令,即使终端ssh关闭了也一直运行。

windows与linux的路径分隔符

在Windows中我们拼接路径时是使用反斜杠的,而在java程序中需要使用双反斜杠,因为第一个反斜杠会被当作转义字符,如下图所示: windows
但是类似的程序放在Linux中就会报错,因为Linux中文件路径分隔符并不是反斜杠,而是正斜杠,如下图所示: linux

运行jar包中指定的 main

运行指定的 main 方法:
java -cp XXXX.jar com.smbea.dubbo.bin.Console start

消费KAFKA topic中的消息

查看topology任务的结果

./bin/kafka-console-consumer.sh  --bootstrap-server 10.11.6.52:9092  --topic WC_result --from-beginning

linux批量杀死进程

ps -ef |grep ConsoleConsumer|awk '{print $2}'|xargs kill -9   //这个会有多余的进程
ps -ef | grep TaskManagerRunner | grep -v grep | awk '{print $2}' | xargs kill -9   //这个在本机器上可以正常kill多个相同进程,但是kill别的机器上的进程会导致所有无关的进程也被杀。慎用!!!!
//一个机器杀死多个机器上的多个进程:比如我杀死2个TaskManagerRunner 
ssh 10.11.6.52 "kill -9 `ssh 10.11.6.52 ps -ef | grep TaskManagerRunner | grep -v grep | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
ssh 10.11.6.52 "kill -9 `ssh 10.11.6.52 ps -ef | grep TaskManagerRunner | grep -v grep | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
//运行两次

  • ps -ef查询当前用户下所有进程

  • grep ConsoleConsumer 匹配出ConsoleConsumer的进程

  • grep -v grep 排除grep ConsoleConsumer的进程 (可选)

  • awk '{print $2}' 获取进程号

  • xargs kill -9 执行kill -9的操作

一些启动指令

./apache-storm-1.2.1/bin/storm logviewer > /dev/null 2>&1 &  #storm的logviewer后台启动
nohup ./kafka-manager-1.3.3.17/bin/kafka-manager &       #kafka-manager后台启动
./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 &  #kafka后台启动

SSH免密登录

  1. 本地系统执行 ssh-keygen -t rsa 命令,生成密钥文件
  2. 本地机器执行命令如:ssh-copy-id -i ~/.ssh/id_rsa.pub dss@10.164.194.42, 将公钥文件传输的远程机器,并生效
  3. 远程机器的.ssh目录需要700权限,authorized_keys文件需要600权限
    chmod 600 authorized_keys
    遇到这样操作还是失效,需要输入密码登录,先检查authorized_keys写入了没,权限等。 失效节点的文件权限检查
    正常节点的文件权限检查

修改".."对应的文件夹为700,然后成功免密登录,不知道什么原因......

僵尸进程

查看:
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:

-A 参数列出所有进程

-o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数

杀死:

先kill -9 ppid
再kill -9 pid

移动文件夹

命令格式:mv [-fiv] source destination

例如:
如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:
mv /test1/file1 /test3/file2

路径和目录

./ 同级目录
../ 上级目录,父级目录
~/ /home/user
pwd 显示当前路径

hadoop

hdfs

  • 创建目录
    hdfs dfs -mkdir /demo1
  • 上传到hdfs
    hdfs dfs -put /home/hadoop/core-site.xml /demo1
  • 下载到本地
    hdfs dfs -get /demo1/core-site.xml /home
  • 删除文件
    hdfs dfs -rm -r -skipTrash /flink-checkpoints/*

yum任何指令无响应

rm /var/lib/rpm/.dbenv.lock

用户环境变量

.bashrc和.bash_profile是用来定义用户环境变量。而且.bash_profile里还会调用bashrc。
全局linux有一个JDK1.7,我想修改自己的JDK1.8。直接在.bashrc里面添加

export JAVA_HOME=/home/wxt/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_PATH}:$PATH

特别注意export PATH=${JAVA_PATH}:$PATH 。$PATH要放在最后面,不然JAVA_PATH会被前面全局的覆盖。顺序是前面的变量覆盖后面的变量。

手动清理内存

1.sudo sync    //把缓存的写入磁盘
2.sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"   //清空所有缓存
3.sudo sh -c "echo 0 > /proc/sys/vm/drop_caches"   //重新分配回0,不释放的默认状态

相关文章

网友评论

      本文标题:指令随笔

      本文链接:https://www.haomeiwen.com/subject/mutbiftx.html