Linux知识汇总
一、常用命令
🧵🧵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 的行
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常用命令
🧵🧵输出重定向
🧵🧵`dirname $0`
🧵🧵 `basename $0`
🧵🧵BASH_SOURCE[0]
🧵🧵nohup......&
🧵🧵scp
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}
🧵🧵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内存介绍
1 [root@akia~]# cat /proc/sys/vm/swappiness 2 60
1 [root@akia ~]# sysctl vm.swappiness=10 2 vm.swappiness = 10 3 [root@timeserver ~]# cat /proc/sys/vm/swappiness 4 10
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 :可以将找到的关键词部分加上颜色的显示喔!