shell 命令/程序 摘要记录

10 阅读 作者:DeskPins 2020-03-16

很多时候我们只是不知道/忘了有这么个东西!
这些都是我需要时从网上找的,从哪里来回哪里去。

  1. echo不换行 echo -e echo颜色 echo -e \033[36m红色\033[0m

  2. lsof lsof -i tcp lsof filename lsof -u ubuntu lsof -p pid lsof -c programname

  3. 查看一个进程的环境变量 cat /proc/<pid>/environ | tr \\0 \\n

  4. 查看Linux发行版 uname -a cat /etc/issue.net lsb_release -a

  5. apt候选 apt-cache

  6. 查看不可见字符 cat -A 比如查看 ANSI escape code

  7. top 分别按E,e切换内存单位 除此之外还有 htop atop iotop
    top中java程序的内存解读:<此处追加SOF链接>

  8. bash命令行删除相关 自己试 Ctrl + K Ctrl + U Ctrl + W Ctrl + A Ctrl +E

  9. jcmd jcmd pid VM.system_properties jcmd VM.flags

  10. 当前java安装路径 java -verbose

  11. iconv 编码转换

  12. Linux目录介绍 man hier

  13. 16进制查看 cat xxx | hexdump -c

  14. ls -altr 查看最近修改的文件

  15. shopt shell的配置,关闭shell的通配符以打开正则表达式: shotp -s extglob,这样就可以用rm删除时来排除某个文件了 rm -rf * !(except)

  16. grep的或逻辑 grep -E 'A|B' = egrep 'A|B' = grep -e 'A’ -e 'B'

  17. pkill pgrep killall pkill的优势是pkill -f可以匹配整个命令行
    killall的优势是kilall -o/-y 可以根据程序启动时长杀掉程序 killall -y 1,2,3,4,5,6,7 即杀死启动时间短于1秒2分3小时4天5周6月7天的所有程序,killall只能匹配程序名
    当然它们默认发送的信号是SIGTERM 即15.

  18. iostat iotop vmstat nmon
    关键的是如何解读所看到的数据<此处追加博文链接>

  19. xargs和find经常搭配使用 xargs -d即delimiter:分界符,默认是空格
    默认分界符是空格,那么当遇到前一个输出必须含有空格时咋整?find . -name . '*.log -print0 | xargs -0 rm -f -print0和-0分别你唱我和
    比如在很多java文件中找main方法: find . -name '*.java | xargs grep main,即将find输出的文件名作为grep的输入了

  20. shell中重定向 &>xxx等价于 某输出>xxx 2>&1 &>filename 意思是把标准输出和标准错误输出都重定向到文件filename中

  21. date 输入微秒 date +'%Y-%m-%d %H:%M:%S.%N' | cut -b 1-25

  22. 如何确定自己是否在docker容器中, cat /proc/self/cgroup 中CPU是否有docker字样:https://stackoverflow.com/questions/20010199/how-to-determine-if-a-process-runs-inside-lxc-docker,或者检查是否存在文件 /.dockerenv

  23. 当前的TTY,输入tty即可当前进程ID$$

  24. 使用SSH进行流量转发,机器A和B均安装有openSSH,内网机器A可以到有固定IP的机器B,但是B到不了A,,此时机器A登录机器B时可以使用 ssh -R8022:localhost:22 userOnB@IPB,这时在机器B就可以ssh -p8022 userA@localhost,这样B就可以登录A了; 在A上,不只可以转发自己的localhost:22,可以转发机器A可达的任何端口,来源superuser点我ssh -L是转发远程端口,此时机器A可以到机器B,机器B可以到机器C(或者服务C),机器A到不了机器C,ssh -L8022:IPC:PortC userB@IPB, 在机器A就可以ssh -p8022 userC@localhost到达C。所以-R是转发远程流量,-L是转发本地流量;R是在远程主机创建端口,L是在本地创建端口,在哪个主机创建端口(被动套接字) 就是目的是要通过已经建立的SSH会话转发哪个主机的流量,而去利用另一端的流量。
    -R在远程主机创建端口,远程主机就可以利用本机流量;-L在本机创建端口,本机就可以利用远端流量。(此处本机是指调用了SSH命令的机器) 后来查到一个更厉害的-D,直接拿要去登录的主机做代理服务器,,,,还有个-X!

  25. Linux查看文件被哪个进程占用: fuser 我用来看apt-get的锁被谁占用。

  26. pidof快速查看进程ID,让我想起了pkill

  27. 从docker中拷贝文件出来 docker cp <containerId>:/file/path/within/container /host/path/target

  28. java默认的垃圾回收器

  29. Linux 内核级命令 ltrace (lib) strace ltrace跟踪线程会导致整个进程退出,因为进程内存共享,trap的原因 网络nstat rtacct

  30. ubuntu设置代理 需要环境变量 http_proxy=http://xxxx:80等,编辑/etc/environment或者profile等配置
    https://askubuntu.com/questions/158557/setting-proxy-for-apt-from-terminal

  31. crontab的日志 https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

  32. sudo 免密 visudo; USER_NAME ALL=(ALL) NOPASSWD:ALL

  33. AWS EC2 curl http://169.254.169.254/latest/meta-data/public-ipv4

  34. which where后,有知道一个命令:type,type好像更实用, tpye -p

  35. OS的发行版 cat /etc/*release lsb_release -a

  36. 把用户添加到一个组:usermod -a -G some_group some_user,同样还有adduser、useradd、addgroup、userdel等命令等你去用

  37. grep查看保留表头 ps -ef | { head -1; grep XXX } or ps -ef | egrep PID|XXX

  38. 一个进程有几个线程 ps -efL or ps -o nlwp <pid> or jconsole <javaPid>

  39. 查看某个JVM参数 比如线程栈大小 java -XX:+PrintFlagsFinal -version | grep ThreadStackSize

  40. alternatives 的简单使用
    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_191/bin/java 2 1967
    sudo update-alternatives --config java

  41. vim去掉换行符(计算MD5):set noendofline binary

  42. ps输出中的多个空格cut无法处理 ps -opid,ppid,cmd | tr -s " " | cut -d " " -f 2,3

  43. 下载某文件时是否支持断点续传 wget -S xxxx | grep Accept-Ranges

  44. [MySQL] 表中某字段内容替换 UPDATE table SET field = REPLACE(field, 'string', 'anothervalue') WHERE field LIKE '%string%';

  45. tcping sudo apt install tcptraceroute -y && sudo wget http://www.vdberg.org/~richard/tcpping -O /usr/bin/tcping && sudo chmod 755 /usr/bin/tcping

  46. 安装terminal词典见我的软件安装博文

  47. 有的时候,需要让一个正在前台运行的程序,即使SSH断开也不要停止,要命的是执行程序前没有没有nohup,或者在tmux or screen中执行。简单了解些Linux会话组就知道不让它停止而一直执行是有办法的。解决办法:reptyr当然引用自SOF了,如果你偷一个进程失败时,那就尝试用-T参数偷过来所有进程,如果提示attach失败,那么需要修改内核参数,如下 sudo bash -c 'echo 0 > /proc/sys/kernel/yama/ptrace_scope'sudo vim /etc/sysctl.d/10-ptrace.conf;还有命令disown

  48. Terminal实时流量监控,精确到IP.iftop

  49. scp两台远程主机 本主机上,在两台远程主机间拷贝文件.如果两台主机都使用密码的话那很好解决(这个也有个前提,就是曾经在远程源主机登录过远程目的主机,根本是需要保存远程主机指纹),在这里插入图片描述但是如果是私钥登录,-i只能指定一个私钥传递给ssh,就有问题了!SO上这篇回答:https://superuser.com/questions/686394/scp-between-two-remote-hosts-from-my-third-pc,需要在本机~/.ssh/config下指定两台远程主机的私钥;使用-3开关,本机作为透明中转,就不需要远程主机A保存远程主机B的指纹。 如果两台远程主机密钥一样,一个-i就ok

  50. top f后可以选择依据哪列排序 <、>换页

  51. /etc/systemd/system.conf 限制systemd服务,ulimit限制PAM认证? 学习 cat /proc/<pid>/limits

  52. glibc版本查询: ldd --version (ldd值得一man ldd值得一man ldd值得一man) 或者 getconf GNU_LIBC_VERSION参考自

  53. 查看pmap命令内存块内容
    gdp -pid [pid]
    dump memory mem.bin 0x00007f8b00000000 0x00007f8b00000000+65512
    cat mem.bin | strings

  54. lsof 给文件把文件大小单位转换, lsof -p <pid> | awk '{$7=$7/1048576 "MB" } 1' 或者 lsof -p <pid> | numfmt --field=7 --to=iec | head 后者不可靠,因为lsofSIZE/OFF栏可能是0t0,0t表示offsize;对于lsof中TYPE出现的REG、MEM,和FD出现的0u,1w,124r等可以一man

  55. 历史登录记录:last,所有用户上次登录记录,lastlogin

  56. 查看某个用户的ulimit,可以引申哦 su USER --shell /bin/bash --command "ulimit -n"

原文地址:https://blog.csdn.net/KHZ_222/article/details/90969233
热门教程
SHELL脚本企业级案例sshkey架构批量分发文件expect非交互式批量分发密钥 0
LINUX运维之shell自动化安装与自动化部署 0
LINUX系统之Shell脚本高级编程自动化运维实战 0
Linux脚本编程shell编程入门到实战教程 0
C++最新就业班第四期教程全集 0
利用Shell脚本生成全局唯一UUID 0
C语言生成全局唯一的UUID库 libuuid是一个用于生成UUID的C库 0
C++利用Boost库生成UUID boost::uuids::random_generator() 0
QT通过QUuid类实现了UUID的生成 0
Windows下提供了函数CoCreateGuid用于生成UUID 0
Java生成UUID的方法 0
QT判断文本编码的方法QTextCodec::codecForName 0
QT框架提供的强制类型转换方法qobject_cast qgraphicsitem_cast 0
怎么设置QToolBar按钮间距 0
QT利用QFileDialog实现对文件和目录的选择 0
QT获取用户对指定文件的权限,是否可读,可写这些 QT给指定文件重命名 0
设置或获取整个 URL 为字符串 设置或获取 href 属性中在井号“#”后面的分段 0
layui隐藏列的二种设置方法 hide:true 0
从PHP框架剥离的判断是否为手机移动终端的函数 0
js来得到地址栏中的地址,有几种方法 0
相关文章
开发中必知必会的常用Linux命令 16
VS2019编写简单的C程序示例 16
学习过程中觉得写得好的博客记录 16
【题目】用C语言编写洗牌发牌程序 16
记一次flink程序优化 16
《程序人生》风雨十年-从大学到技术专家我做了啥? 16
Linux系统编程&mdash;&mdash;基础命令总结 16
strlen和sizeof有什么区别?(记录) 16
端口占用解决命令 16
2019年末前端面试记录 16
shell脚本:检测磁盘空间和inode使用率/新文件/网卡流量 16
shell 正则表达式 16
如何知道你在 Linux 里最常使用的几个命令? 16
IC入门记录(持续更新) 16
【记录】谈计算机知识、技术与能力 16
常用git命令 16
shell脚本部署mysql主从 16
Android Doze模式适配实验记录 16
终于!这个速算题自动批改程序被我给做出来了! 16
centos7 shell脚本一键安装php环境全家桶 16