Linux知识汇总

一、常用命令

🧵🧵more(尽量少用vim查看)

类似 cat ,cat命令是将整个文件的内容一页一页的显示,推荐查看文件用more,一个百度大佬说过vim打开极大的文件会把机器卡掉,所以不要养成这种习惯

🧵🧵curl命令

主要是利用URL在命令行下进行文件传输工具,语法:

1 curl [option] [url]

最简单的例子:

1 curl http://www.linux.com

执行后,www.linux.com 的html就会显示在屏幕上了,具体各种操作可以参见:Linux curl命令详解

🧵🧵lsof -i    列出所有的网络连接

这个有啥用呢。比如你想kill占用端口号9081的进程,先用lsof -i:port显示pid,然后kill -9杀死该进程

🧵🧵hostname -i    显示主机ip

🧵🧵wc -l    计算行数

🧵🧵grep中的或和与

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行
grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行

🧵🧵 增加一个用户并添加root权限

1 sudo su root
2 # 无法打开 /etc/passwd、group、shadow文件时执行chattr
3 chattr -i /etc/passwd
4 chattr -i /etc/group
5 chattr -i /etc/shadow
6 adduser xxxx
7 passwd xxxx
1 chmod u+w /etc/sudoers
2 vim /etc/sudoers 增加xxxx    ALL=(ALL)       ALL
3 chmod u-w /etc/sudoers

🧵🧵ps -ef | grep xxx

显示一个进程的信息,比如想看机器上有没有进程xxx

🧵🧵ps -T -p pid

显示一个进程的线程,ps的 “-T”选项可以开启线程查看,“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。

🧵🧵free -m   查看内存

🧵🧵df -h   查看磁盘容量

🧵🧵du -h  ./ --max-depth=1  输出当前目录下各个子目录所使用的空间

🧵🧵查看网卡带宽

  • 先使用ifconfig命令,查看当前所需ip对应的网卡名,比如eth0;
  • 命令:ethtool eth0(网卡名),此命令需采用root账号才能查看;

🧵🧵查询CPU信息

  • 查CPU个数:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
  • 查核数:cat /proc/cpuinfo | grep "cpu cores" | uniq
  • 查总逻辑CPU总数:cat /proc/cpuinfo | grep "processor" | wc -l

🧵🧵vim常用命令

        /字符串      查找字符串
        ^ (即shift+6)       移到行首
        $ (即shift+4)       移到行尾
        yy                      复制一行
        b                        粘贴

🧵🧵输出重定向

标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。所以这里2>&1 的意思就是将标准错误也输出到标准输出当中

🧵🧵`dirname $0`

被'括起来表示执行里边的命令;$0表示当前Shell程序的文件名;dirname $0表示获取当前Shell程序的路径,相当于输出./

🧵🧵 `basename $0`

只显示当前脚本或命令的名字。

🧵🧵BASH_SOURCE[0]

等价于 BASH_SOURCE, 取得当前执行的shell文件所在的路径及文件名。

🧵🧵nohup......&

在后台运行

🧵🧵scp

拉远方文件:scp 访问远方机器的用户名@远方机器ip:远方文件路径  文件的本机存放路径
推本地文件:scp 本地文件路径 访问远方机器的用户名@远方机器ip:文件在远方机器的存放路径
以root用户查看所有crontab定时任务
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

🧵🧵git常用命令

        git helpget help + 命令      查看帮助
        git init                                     初始化git本地仓库
        git status                                查看文件状态(红色代表没有被纳入git管理或者文件被修改)
        git add+文件名                       添加文件到git版本控制中
        git commit -m "注释"            提交代码
        git config --global user.name "用户名"                配置全局用户名
        git config --global  user.email "邮箱"                   配置全局邮箱
        git reset  --hard HEAD^        版本回退,^代表一个版本
        git log                                     查看文件修改日志
        git reflog                                查看修改日志
        多人开发git步骤如下:
 
注: 1. git安装方法
       2. IntelliJ IDEA 中集成git

二、ln命令

它的功能是为某一个文件在另外一个位置建立一个同步的链接,这个命令最常用的参数是-s,比如:当前路径新创建test,然后引向/var/www/test 文件夹:

1 ln –s  /var/www/test  test

-s或--symbolic  对源文件建立符号连接,而非硬连接。

删除软链接和删除普通的文件是一样的,最好不要带-rf,一定不要写成test/,会把真实文件夹文件删掉

1 rm –rf test

另外,还有两点要注意:

第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

第二,ln的链接有软链接硬链接两种,软链接就是ln –s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件;

无论是软链接还是硬链接,文件都保持同步变化。

三、SimpleHTTPServer

在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer。我们可以很简单的使用  python -m SimpleHTTPServer 快速搭建一个http服务,提供一个共享当前目录的web服务。

命令如下:

1 python -m SimpleHTTPServer 19999
2 // nohup python -m SimpleHTTPServer &

然后利用wget递归下载文件夹目录

1 wget -c -r -np -nc -L -p ip:19999
2 // nohup wget xxx >log 2>&1 &

选项的意思:

 1 **注意:大小写敏感!大写和小写命令代表不同操作**
 2 -P 表示下载到哪个目录
 3 -r 表示递归下载,下载指定网页某一目录下(包括子目录)的所有文件 
 4 -np 不要追溯到父目录
 5 -k 表示将下载的网页里的链接修改为本地链接.(下载整个站点后脱机浏览网页,最好加上这个参数 
 6 -p 获得所有显示网页所需的元素,如图片等
 7 -c 断点续传
 8 -nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
 9 -o 将log日志指定保存到文件(新建一个文件)
10 -a, –append-output=FILE 把记录追加到FILE文件中
11 -A 指定要下载的文件样式列表,多个样式用逗号分隔 
12 -A zip 只下载指定文件类型(zip)
13 -N 不要重新下载文件除非比本地文件新
14 -O test.zip 下载并以不同的文件名保存
15 -nc 不要覆盖存在的文件或使用.#前缀
16 -m, –mirror 等价于 -r -N -l inf -nr
17 -L 递归时不进入其它主机,如wget -c -r www.xxx.org/ 如果网站内有一个这样的链接: www.yyy.org,不加参数-L,就会像大火烧山一样,会递归下载www.yyy.org网站 
18 -i 后面跟一个文件,文件内指明要下载的URL(常用于多个url下载
19 -nc  不要重复下载已存在的文件 --no-clobber

想下载一个文件的话

1 wget + 下载链接 下载文件

四、Swap内存介绍

类似Windows下的虚拟内存,当物理内存不够时,将磁盘上一块区域作为内存使用,但是磁盘读写较慢,这样会加大系统IO,同时造成大量页的换进换出,严重影响系统性能。我们可以通过参数swappiness调节Swap内存何时使用。
linux中swappiness默认设置为60,具体如下:
1 [root@akia~]# cat /proc/sys/vm/swappiness
2 60
也就是说,内存在使用到100-60=40%时,就开始出现有Swap内存的使用,Swap空间大小默认为物理内存2倍。
swappiness可以临时调整为10,重启无效,具体如下:
1 [root@akia ~]# sysctl vm.swappiness=10
2 vm.swappiness = 10
3 [root@timeserver ~]# cat /proc/sys/vm/swappiness
4 10
swappiness永久调整需要在/etc/sysctl.conf加上下边两行:
1 [root@akia ~]# cat /etc/sysctl.conf
2 # Controls the maximum number of shared memory segments, in pages
3 kernel.shmall = 4294967296
4 vm.swappiness=10
5 [root@akia ~]# sysctl -p
就可以了

四、判断每台机器上进程是否存在

今天写了一个小脚本,检查集群每台机器上是否存在filebeat进程,练了一下shell命令

 1 for i in `cat ./ip.txt`
 2  
 3 do
 4   echo $i
 5   ssh $i "ps -ef | grep -v grep | grep filebeat" > /dev/null
 6   if [  $? == 1 ]
 7   then
 8         echo " the filebeat is not running,starting it"
 9   else
10         echo "the  filebeat is  running"
11   fi
12 done

然后把所有机器的ip写在ip.txt里边就可以了,还有几个地方说下:

grep是在文件中搜索包含指定字符串的行,加了“-v” 选项就是反一下;
/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF,有些时候,我并不想看道任何输出,我只想看到这条命令运行是不是正常,那么我们可以同时禁止标准输出和标准错误的输出:  cat $filename 2>/dev/null >/dev/null

五、shell命令

🧵变量

1 your_name="qinjx"
2 echo $your_name
3 echo ${your_name}

注:

  • 变量写法有两种,一种带大括号,一种不带,推荐带,因为字符串中使用可以区分出变量,比如echo "I am good at ${skill} Script";
  • 变量赋值时不带$

🧵字符串 

字符串可以用单引号,也可以用双引号,也可以不用引号,比如单引号

1 str='this is a string'
  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行)

双引号就有一些优点,比如

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
1 your_name='runoob'
2 str="Hello, I know you are \"$your_name\"! \n"
3 echo -e $str

 🧵echo

echo换行的话,加换行符\n和-e 选项

1 echo -e 'sdfskfjlsdjfkds\n1111111111'
2 #输出如下
3 sdfskfjlsdjfkds
4 1111111111

-e的作用是如果字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

1 •\a 发出警告声;
2 •\b 删除前一个字符;
3 •\c 最后不加上换行符号;
4 •\f 换行但光标仍旧停留在原来的位置;
5 •\n 换行且光标移至行首;
6 •\r 光标移至行首,但不换行;
7 •\t 插入tab;
8 •\v 与\f相同;
9 •\\ 插入\字符

 🧵grep

获取字符串时查找内容,加-v表示反向选择

选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

 

 

 

posted @ 2019-04-20 22:46  akia开凯  阅读(310)  评论(0编辑  收藏  举报