工具网站(包含操作系统镜像)

https://msdn.itellyou.cn/

nc netcat代替telnet

操作系统发行版

manjaro:https://manjaro.org/

系统命令

批量处理

saltstack

重启关机:

reboot shutdown -r now shutdown now

shutdown -h now 立马关机

shutdown -h 20:00 系统会在20:00关机

shutdown -h +10 十分钟后关机

shutdown -r +10 十分钟后重启

shutdown -c 取消即将进行的关机

路由跟踪

traceroute www.baidu.com

查看系统登录信息

last -f /var/log/wtmp

查看占用cpu最高的线程

top命令,找到cpu占用最高的进程

top -p <pid>查看该进程的线程

二进制文件编译
./configure
make
make install

打印16进制

printf '%x\n' 15

紧急救援模式在启动选项按E可进入grub

查看磁盘情况:df -h

创建多级目录:mkdir -p /my/mysql/datadir

同时创建多个:mkdir -p /data/redis/{6379,6380,6381}

查看系统日志:系统所有的日志都在 /var/log 下面

linux日志文件说明/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件

翻页:shift pageUp/pageDown

清空文件
cat /dev/null > /data/a.log

删除筛选出来的文件
ll |head -n20|xargs rm -rf
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
查看当前文件夹属性
ll /data -d,不显示子文件属性

切换用户

`su - name` `sudo -u zhangli`,即切换用户

​ 默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢?

​ (1)sudo 命令

​ 这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root

​ 权限就失效了。

​ (2)sudo -isudo su

​ 通过这种方法输入当前管理员用户的密码就可以进到root用户。

​ (3)如果想一直使用root权限,要通过su切换到root用户。

​ 那我们首先要重设置root用户的密码:

​ sudo passwd root

​ 这样就可以设置root用户的密码了。

​ 之后就可以自由的切换到root用户了

​ su 输入root用户的密码即可。

​ 当然,如果想从root用户切换回一般用户,则可使用 su -val(一般用户名)

​ 而当你再次切回到root用户,则只需要键入exit,再次输入exit则回到最初的用户下

网络管理:

​ 启动网络管理 systemctl start NetworkManager

​ 查看网卡对应的类型 nmcli dev status

​ nmcli通常用法的一些例子

nmcli general status #会显示NetworkManager的整体状态

nmcli connection show #仅显示活跃的连接

nmcli connection show -a #会显示所有的连接

启动/停止网络设备

nmcli device status #查看状态

​ 你可以使用nmcli从命令行启动或者停止网络设备,这等同于ifconfig中的up和down。

​ 停止网络设备使用下面的语法:

nmcli device disconnect eno16777736

​ 要启动它使用下面的语法:

nmcli device connect eno16777736

关闭networkmanager

systemctl stop NetworkManagersystemctl disable NetworkManagersystemctl restart  network=

更改主机名

hostnamectl set-hostname manager43

查看端口占用:

netstat -tunlp|grep 3306

查看端口连接情况:
netstat -tun | grep 8080

查看端口是否可以访问

nc -v -w 1 127.0.0.1 6379

iptables:

查看端口状态 :iptables -L -n --line-number
查看开放的端口:more /etc/sysconfig/iptables

设置 INPUT 方向所有的请求都拒绝: iptables -P INPUT DROP

放开所需端口:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

iptables -I INPUT -p tcp --dport 8889 -j ACCEPT

保存规则:iptables-save > /etc/sysconfig/iptables 或者 service iptables save

设置为开机启动并且重启:systemctl enable iptables.service systemctl reboot

权限:

文件类型 属主权限 属组权限 其他用户权限
d-文件夹 读 写 执行 读 - 执行 读 写 -
d r w x r - x r w -
4+2+1 4+1 4+2
  1. chgrp:更改文件属组

语法:

chgrp [-R] 属组名 文件名

  1. chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名

chown [-R] 属主名:属组名 文件名

chown user:group …用户授权,一起执行给单独用户授权

chown zhangli abc:改变abc的所有者为zhangli

把hh.c的用户访问权限应用到sakia作为所有者

chown sakia hh.c

将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net

chown -R sakia:net /tmp/sco

  1. chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。(r=4,w=2,x=1 )

chmod -R 777 /my/mysql/ (chmod +x …)

sudo chmod +x zkStart.sh 授权执行权限

chmod a+r abc:给所有用户添加读的权限

chmod u+w,g+w,o+w u用户,g组,o其他组别的用户

查看历史命令:

history

查看selinux状态:

sestatus

关闭selinux:

/etc/selinux/config

SELINUX=disabled

笔记本盒盖之后不休眠:

https://www.jb51.net/os/RedHat/506934.html

  1. vi /etc/systemd/logind.conf

  2. HandleLidSwitch=ignore

  3. systemctl restart systemd-logind

grep管道符

查看关键字前后多行
$grep -10 ‘123’ test.log//打印匹配行的前后10行
或
$grep -C 10 ‘123’ test.log//打印匹配行的前后10行
或
$ grep -A 10 -B 10 ‘123’ test.log //打印匹配行的前后10行$grep -A 10 ‘123’ test.log //打印匹配行的后10行$grep -B 10 ‘123’ test.log//打印匹配行的前10行

查看进程时显示多余的进程:

ps -ef|grep keyword时会显示n+1个进程,因为grep本身也是一个进程,需要过滤
ps -ef|grep keyword|grep -v grep

查询显示目录下所有文件中关键字所在的行

grep -r "keyword"

grep and,grep -E 或者egrep

grep -E 'pattern1' filename | grep -E 'pattern2'

grep not(反选匹配,可匹配得到除下指定pattern外的所有line)

grep -v '200'

egrep 'Manager|Developer' employee.txt | grep -v Sales

grep or,使用grep -E,后接正则表达式

grep -E 'pattern1|pattern2' filename

grep -o: -o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出。这样只要统计输出的行数就可以知道这个字符出现的次数了。

wc(Word Count)命令

wc [选项]文件…

统计指定文件中的字节数、字数、行数,并将统计结果显示输出

命令参数

-c 统计字节数。

-l 统计行数。

-m 统计字符数。这个标志不能与 -c 标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

-help 显示帮助信息

–version 显示版本信息

查看关键字出现次数

grep -o ‘key' 文件名.txt | wc -l

查看关键字出现行数

grep ‘好' 文件名.txt | wc -l

查看命令的用法

man 命令

man vi

less分页命令

awk查看第二列数据

ps -ef|grep free-web|awk '{print $2}'

用户账号:

显示所有用户

users

cat /etc/passwd

第三个参数500以上则为后面建的用户

新增用户

useradd 选项 用户名

选项:

-c comment 指定一段注释性描述。

-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。

-g 用户组 指定用户所属的用户组。

-G 用户组,用户组 指定用户所属的附加组。

-s Shell文件 指定用户的登录Shell。

-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

-e 指定有效期,格式YYYY-MM-DD

-p 密码

-r 建立系统用户

例子:

useradd -s /bin/sh -g group –G adm,root gem

此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

这里可能新建组:#groupadd group及groupadd adm

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。

用户删除

userdel -r name

-r,它的作用是把用户的主目录一起删除

用户修改

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等、选项与useradd命令中的选项一样

usermod 选项 用户名

将用户加到组中

sudo usermod -aG docker $USER
usermod -aG docker sudoers

sudo gpasswd -a ${USER} docker

用户口令管理(密码)

passwd 选项 用户名

-l 锁定口令,即禁用账号。

-u 口令解锁。

-d 使账号无口令。

-f 强迫用户下次登录时修改口令。

修改用户密码

passwd username(修改自己的不用输username)

用户增加sudo权限

使用visudo操作保证格式正确
  1. vim /etc/sudoers

  2. root ALL=(ALL) ALL下增加 username ALL=(ALL) ALL

  3. username ALL=(ALL) NOPASSWD:ALL(免密)

用户组

查看当前用户属于哪些组

id $USER

groups

groups zhangli442

查看所有组

cat /etc/group

新加组

groupadd 选项 用户组

-g GID 指定新用户组的组标识号(GID)。

-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

例子:sudo groupadd docker

删除组

groupdel 用户组

修改组

groupmod 选项 用户组

-g GID 为用户组指定新的组标识号。

-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。

-n新用户组 将用户组的名字改为新名字

例子:

groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3

切换组

newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组

远程另外机器

ssh ip -l username -p port

ssh [user@ip](mailto:user@ip)

ssh -i secret.pem root@服务器IP

复制文件

scp命令 -P 指定端口

本地复制到远程

scp /music/1.mp3 root@www.runoob.com:/home/root/others/music

远程复制到本地

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3

显示进度复制gcp

apt-get install python3-pip

pip install gcp

https://wiki.goffi.org/wiki/Gcp/en

ubuntu 中: sudo apt-get install gcp -y

如果gcp和bash设置的别名有冲突,使用unalias gcp取消别名设置(alias设置别名)

vim vi命令

编辑撤销

esc u

恢复撤销

Ctrl + r

删除整行

esc dd

esc 2dd (删除光标下两行)

查找

esc /关键字 找到后回车 n向下寻找,N向上寻找

显示行号

:set number 或者 :set nu

永久显示

在~/.vimrc文件(没有创建新的)末尾加上set number

隐藏行号

:set nonumber 或者 :set nonu

复制行

:[range]copy{address} :1copy. 将第一行复制到光标下一行 :t$拷贝当前行到最后一行

​ :1,3copy5 拷贝第1到3行到第6行

移动行

move操作同copy语法

跳到最后一行

底线命令模式

:0或:1跳到文件第一行

:$跳到文件最后一行

命令模式

gg跳到第一行

shift+g跳到文件最后一行

压缩zip

将home/html文件夹下所有文件和文件夹打包为当前目录下的html.zip

zip -q -r html.zip /home/html

解压.xz

xz -d xxx.xz

压缩tar

tar -zcvf 11.tgz 1.txt (将1.txt压缩成1.tgz)

解压zip

unzip -d 目录 文件

只看一下zip压缩包中包含哪些文件,不进行解压缩

unzip -l test.zip

解压tar.gz

tar -zxvf 文件 -C 目录

tar -zxvf java.tar.gz -C /usr/java

解压tar.xz

外层xz,里层tar的两层压缩文件

tar -xvJf node-v12.13.0-linux-x64.tar.xz

创建tar.xz压缩文件

#1. 先创建xx.tar文件
tar -cvf xx.tar xx
#2. 在创建xx.tar.xz文件
xz -z xx.tar

查看文件夹大小

du -sh 目录

du -sh * 查看所有文件夹大小

查看磁盘占用

df -h

查看本地磁盘,不看挂载

df -hl

查看内存

free

free -h -m -s 3

当前目录 $PWD

查询关键字

vim中查询关键字,esc在命令模式下/关键字,回车 n 下一个,N上一个

cat 文件 |grep 关键字

统计关键字个数

perl -e 'while(<>){$count+=s/alias//g;} print "$count";' filename

filename 表示要处理的对象是filename,也就是我们需要统计的文件

while(<>):每次读出文件的一行,直到文件结束。读取出来的内容放入默认变量$_中。

s/A//g:把默认变量($_,就是上面读出来的)中的A字符全部(g)替换为空。这个语句返回的结果是替换成功的次数。

$count+ = s/A//g:把替换成功的次数记录在$count中。

Pint $count: 打印总的次数

查询所有java进程

ps -ef | grep java

Jenkins脚本

cd free-web/target
jarName=`ls |grep free-web-|grep .jar|head -n1`
if [ ! -z $jarName ];thensudo cp $jarName /data/free-web///杀掉特定进程process=`ps -ef|grep free-web|grep -v grep|awk '{print $2}'`if [ ! -z $process ];thensudo kill $processfisudo /data/free-web/start.sh `ls |grep free-web-|grep .jar|head -n1`
fi

查看内存状况

ps -aux |grep java

杀掉所有java进程

pkill - 9 java

杀掉特定的进程

kill -9 进程号

查看环境变量

export

设置环境变量

export PATH=/

find查找

find / -name host

查找一个区间大小的(比如 100MiB 和 200MiB )之间的文件:

find / -size +100M-size -200M-ls

redis登录

redis-cli

redis-cli -a password

关键字查询历史命令

Ctrl+r

后台运行jar

1.nohup

用途:不挂断地运行命令。
注意:无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

2.&

用途:在后台运行
一般和nohup两个一起用
nohup command &

例子nohup java -jar test.jar >temp.txt 2>&1 & (>temp.txt将日志打在指定文件中,nohup保证客户端退出后程序继续执行)

-u参数表示实时写入,python重定向日志流不实时写入增加的参数
nohup /usr/bin/python3.5 -u /data/concatvideos.py >> concatvideos.log 2>&1 &

多条命令执行连接符

;分隔

commond1; commond2两条命令顺序执行,不管是否会失败

&&分隔

commond1 && commond2 在commond1执行完成之后再执行commond2命令

||分隔

commond1 || commond2
在commond1执行不成功才执行commond2

系统编码

1、查看编码

echo $LANG

2、修改

1)vi /etc/sysconfig/i18n

#LANG="en_US.UTF-8"
#SYSFONT="latarcyrheb-sun16"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_HK.UTF-8:zh_HK:zh:zh_CN.UTF-8:zh_CN:zh:zh_SG.UTF-8:zh_SG:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

2)source /etc/sysconfig/i18n

将输出打印到nohup.out中

nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &

date命令

显示系统时间

date -R

date +%s 可以得到UNIX的时间戳;

用shell将时间字符串与时间戳互转:

date -d "2010-10-18 00:00:00" +%s 输出形如:1287331200

而时间戳转换为字符串可以这样做:

date -d @1287331200 "+%Y-%m-%d" 输出形如:2010-10-18

如果需要得到指定日期的前后几天,可以:

1. seconds=`date -d "2010-10-18 00:00:00" +%s`       #得到时间戳2. seconds_new=`expr $seconds + 86400`               #加上一天的秒数864003. date_new=`date -d @$seconds_new "+%Y-%m-%d"`     #获得指定日前加上一天的日前

查看操作系统信息

uname -a

内核

uname -r

centos查看版本:

cat /etc/redhat-release

查看安装的程序在哪

whereis xx

which xx

查看shell

cat /etc/shells

当前shell:

echo $SEHLL

切换shell

chsh -s /bin/zsh

安装oh my zsh

https://github.com/ohmyzsh/ohmyzsh

国内gitee的脚本
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"
443无法访问错误

https://blog.csdn.net/weixin_45505313/article/details/108006795

  1. 使用以下网页工具解析查看 raw.githubusercontent.com 的IP地址
    https://site.ip138.com/raw.githubusercontent.com/,可以看到国内可用的 IP 为 151.101.76.133
  2. 修改 hosts
151.101.76.133 raw.githubusercontent.com
  1. 再运行命令则正常访问
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

主题:gallifrey 或 maran)

生成ssh-key

ssh-keygen -t rsa -C “zhangli.skel@gmail.com”

将用户放到sudo组中

vim /etc/sudoers

加上name ALL=(ALL) ALL

或(免密)name ALL=(ALL) NOPASSWD: ALL

将整个组改为sudo权限(sudoer组)

加上%sudoer ALL=(ALL) NOPASSWD: ALL

Wget

将下载的文件存放到指定的文件夹下,同时重命名下载的文件,利用**-O**: wget -O /home/index http://www.baidu.com

磁盘

df、du和fdisk

df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法:

df [-ahikHTm] [目录或文件名]

选项与参数:

-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;

-k :以 KBytes 的容量显示各文件系统;

-m :以 MBytes 的容量显示各文件系统;

-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;

-H :以 M=1000K 取代 M=1024K 的进位方式;

-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;

-i :不用硬盘容量,而以 inode 的数量来显示

du Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。

语法:

du [-ahskm] 文件或目录名称

选项与参数:

-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

-h :以人们较易读的容量格式 (G/M) 显示;

-s :列出总量而已,而不列出每个各别的目录占用容量;

-S :不包括子目录下的总计,与 -s 有点差别。

-k :以 KBytes 列出容量显示;

-m :以 MBytes 列出容量显示;

fdisk fdisk 是 Linux 的磁盘分区表操作工具。

语法:

fdisk [-l] 装置名称

选项与参数:

-l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

磁盘格式化 磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。

语法:

mkfs [-t 文件系统格式] 装置文件名

选项与参数:

-t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

磁盘检验

fsck(file system check)用来检查和维护不一致的文件系统。

若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

语法:

fsck [-t 文件系统] [-ACay] 装置名称

选项与参数:

-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数

-s : 依序一个一个地执行 fsck 的指令来检查

-A : 对/etc/fstab 中所有列出来的 分区(partition)做检查

-C : 显示完整的检查进度

-d : 打印出 e2fsck 的 debug 结果

-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行

-R : 同时有 -A 条件时,省略 / 不检查

-V : 详细显示模式

-a : 如果检查有错则自动修复

-r : 如果检查有错则由使用者回答是否修复

-y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。

磁盘挂载与卸除

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。

磁盘挂载语法:

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点

例子: mount -t nfs 172.20.4.24:/data /data

磁盘卸载命令 umount 语法:

umount [-fn] 装置文件名或挂载点

选项与参数:

-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;

-n :不升级 /etc/mtab 情况下卸除。

例子:

用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面!

[root@www ~]# mkdir /mnt/hdc6

[root@www ~]# mount /dev/hdc6 /mnt/hdc6

[root@www ~]# df

Filesystem 1K-blocks Used Available Use% Mounted on

…中间省略…

/dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6

卸载/dev/hdc6

[root@www ~]# umount /dev/hdc6

ext:

Linux 操作系统的文件数据除了文件实际内容外,通常含有非常多的属性,例如 Linux 操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。文件系统通常会将这两部分的数据分别存放在不同的区块,权限与属性存放在 inode 中,至于实际数据则放置到 data block 区块中。另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。

inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block。

在 Linux 中,可以使用 stat 命令查看某个文件的 inode 信息:

stat /etc/passwd

linux-peanut:~/Desktop # stat /etc/passwd

File: `/etc/passwd’

Size: 2269 Blocks: 8 IO Block: 4096 regular file

Device: 802h/2050d Inode: 1149740 Links: 1

Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2018-04-09 17:16:42.000000000 +0800

Modify: 2018-04-09 17:16:36.000000000 +0800

Change: 2018-04-09 17:16:36.000000000 +0800

Birth: -

可见,文件的绝大部分信息都存储在 inode 中。

磁盘繁忙状态工具

dstat -d 5 -M间隔五秒输出,默认一秒,单位兆

iostat

iostat命令通过观察设备相对于其平均传输速率的活动时间来帮助监视系统输入/输出设备负 载。 它有时用于评估磁盘之间的活动平衡。

iostat -p sda -d 5只显示磁盘状态 -y 不显示第一条信息

ioping磁盘响应延迟

 sudo ioping /dev/sda1

atop 和top命令

atop |grep DSK

EOF写法

END Of File的缩写,表示自定义终止符,EOF一般会配合cat能够多行文本输出

<<EOF //开始

EOF //结束

将123(换行)456输入到test.sh中:

cat <<EOF >test.sh\> 123\>456\>EOF将789追加到test.sh中:cat <<EOF >>test.sh\>789\>EOF

目录结构:

/opt

这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc

这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/var:

这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

与用户账号有关的系统文件

/etc/passwd文件是用户管理工作涉及的最重要的一个文件

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

用户组的所有信息都存放在/etc/group文件中

查看各个命令的使用文档:

使用 man [命令] 来,如 :man cp。

Linux系统中使用以下命令来查看文件的内容:

cat 由第一行开始显示文件内容 -n参数显示行号

tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!

nl 显示的时候,顺道输出行号!:

nl [-bnw] 文件

选项与参数:

-b :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值);

-n :列出行号表示的方法,主要有三种:

-n ln :行号在荧幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w :行号栏位的占用的位数。

more 一页一页的显示文件内容

空白键 (space):代表向下翻一页;

Enter :代表向下翻『一行』;

/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

:f :立刻显示出档名以及目前显示的行数;

q :代表立刻离开 more ,不再显示该文件内容。

b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

空白键 :向下翻动一页;

[pagedown]:向下翻动一页;

[pageup] :向上翻动一页;

/字串 :向下搜寻『字串』的功能;

?字串 :向上搜寻『字串』的功能;

n :重复前一个搜寻 (与 / 或 ? 有关!)

N :反向的重复前一个搜寻 (与 / 或 ? 有关!)

q :离开 less 这个程序;

head 只看头几行

head [-n number] 文件

-n :后面接数字,代表显示几行的意思

tail 只看尾巴几行

tail [-n number] 文件

-n :后面接数字,代表显示几行的意思

-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

文件的inode节点信息

保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)

-i参数显示文件的inode节点信息ls -li

链接(link)

ln命令

ln [参数][源文件或目录][目标文件或目录]

命令参数

-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

硬连接

多个文件名指向同一索引节点,节点号相同,删除一个不影响另外一个访问

  1. 硬链接,以文件副本的形式存在。但不占用实际空间。
  2. 不允许给目录创建硬链接
  3. 硬链接只有在同一个文件系统中才能创建

命令:ln target linkFile1

软连接

符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。数据块中存放的只是目标路径的路径名

  1. 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  2. 软链接可以 跨文件系统 ,硬链接不可以
  3. 软链接可以对一个不存在的文件名进行链接
  4. 软链接可以对目录进行链接

命令:ln -s target linkFile2

这里有两点要注意

  1. ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  2. ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

使用软连接实现全局使用

设置到/usr/local/bin/之后任何地方都可以使用node和npm命令(跟path设置同理?)

#前提将node安装包解压到/usr/software/nodejs/中
ln -s /usr/software/nodejs/bin/npm   /usr/local/bin/
ln -s /usr/software/nodejs/bin/node   /usr/local/bin/

shell中免密码执行sudo

sudo ./test.sh 变为 echo ‘yourpassword’|sudo -S ./test.sh

shell免密码操作

expect工具?待考证

crontab的语法规则格式:

  • 第1列分钟0~59
  • 第2列小时0~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要运行的命令

crontab查看所有执行计划

编辑:crontab -e

查看:crontab -l

特殊字符 代表意义

(星号) 代表任何时刻都接受的意思。举例来说,0 12 * * * ls 日、月、周都是,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。

,(逗号) 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command时间还是有五列,不过第二列是 3,6 ,代表3与6都适用

-(减号) 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思

/n(斜线) 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:/5 * * * * command用与/5来搭配,也可以写成0-59/5,意思相同

mail发送邮件

在/etc/mail.rc中

set from=xxx@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxxx
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb

日志文件:
/var/log/maillog

命令:

echo '邮件内容' | mail -s '邮件标题' 收件人邮箱
或
mail -s '邮件标题' 收件人邮箱 < 邮件内容.txt

curl命令

访问8080端口

curl 127.0.0.1:8080

下载文件 -o

curl -o 1.pdf http://xxxx.pdf

选项

-X 请求方式POST、GET

-d 参数

-H 设置header

-v 来查看详情

-F "file=@FILE_PATH"传输文件

例子:

curl localhost:9999/api/daizhige/article -X POST -H "Content-Type:application/json" -d '{"title":"comewords","content":"articleContent"}'

curl localhost:8000/api/v1/upimg -F "file=@/Users/fungleo/Downloads/401.png" -H "token: 222" -v

查看java安装路径

java -verbose

配置JDK环境变量

/etc/profile末尾加:

export JAVA_HOME=/neworiental/elk/jdk1.8.0_181export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

退出telnet:

ctrl+] 然后在telnet 命令行输入 quit

sed命令

从第一行/16/Apr/2019:14:06:29 +0800开始,到第一行/16/Apr/2019:14:10:41 +0800结束范围内的结果筛选。其中\是转译符,转译/。(/ = /)

sed -n '/16\/Apr\/2019:14:06:29 +0800/,/16\/Apr\/2019:14:10:41 +0800/p' /var/log/nginx/es.ucan.xdf.cn.access.log

替换:

sed 's/this/This/g' test.txt

监控内存 vmstat:

vmstat 1

vmstat -a

字段说明
Procs(进程):r: 运行队列中进程数量b: 等待IO的进程数量Memory(内存):swpd: 使用虚拟内存大小free: 可用内存大小buff: 用作缓冲的内存大小cache: 用作缓存的内存大小Swap:si: 每秒从交换区写到内存的大小so: 每秒写入交换区的内存大小IO:(现在的Linux版本块的大小为1024bytes)bi: 每秒读取的块数bo: 每秒写入的块数系统:in: 每秒中断数,包括时钟中断。【interrupt】cs: 每秒上下文切换数。        【count/second】CPU(以百分比表示):us: 用户进程执行时间(user time)sy: 系统进程执行时间(system time)id: 空闲时间(包括IO等待时间),中央处理器的空闲时间 。以百分比表示。wa: 等待IO时间

zabbix监控

查看配置文件位置

cat /etc/httpd/conf.d/zabbix.conf

字体乱码解决:https://blog.csdn.net/wanglei_storage/article/details/48319227

  1. server端找到配置文件位置
    whereis zabbix
  2. 进入fonts配置,将本地的ttf文件拷贝到此目录
    cd /usr/share/zabbix/fonts
    scp simkai.ttf ./
    chmod 777 simkai.ttf
  3. 修改页面配置,将原来的fonts下的文件名(graphfont)字替换为simkai,不加ttf后缀
    cd ../include
    cp defines.inc.php vim defines.inc.php.bak
    vim defines.inc.php
安装agent

1、 rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm

2、yum -y install zabbix-agent

agent配置

https://www.cnblogs.com/kingwwz/p/6211253.html

  1. zabbix-server所在主机ip,多个的话使用逗号分隔:Server=
  2. 请求超时时间(秒):Timeout=
  3. 开启自定义监控脚本:UnsafeUserParameters=1
  4. 自定义监控配置语法,建议在新的文件中写引入Include进来:UserParameter=key,command
  5. 查看Include是否引入

验证:
zabbix_get -s 127.0.0.1 -p 10050 -k “system.cpu.load[all,avg1]”
其中
-s 客户端的IP
-p 客户端端口,默认10050
-k 监控项的key

邮件报警

  1. linux(centos7)本身带的mailx,命令:echo "content" |mail -s "subject" email
  2. 脚本放到指定目录,从配置文件中指定AlertScriptsPath=/usr/lib/zabbix/alertscripts
  3. 配置报警媒介,选脚本,脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
  1. 配置增加用户,设置报警媒介,权限为超级管理员
  2. 配置动作,发送内容、发送的用户等
Name:动作名称
Default subject:邮件主题
Default message:邮件内容
Recovery message:勾选恢复通知信息
Recovery subject:恢复主题
Recovery message:恢复内容
Enabled:启动Default subject:Zabbix 监控告警 : {TRIGGER.NAME}!
Default message:告警信息:{TRIGGER.NAME}告警主机:{HOSTNAME1}告警时间:{EVENT.DATE} {EVENT.TIME}告警等级:{TRIGGER.SEVERITY}告警项目:{TRIGGER.KEY1}问题详情:{ITEM.NAME}:{ITEM.VALUE}当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}事件ID:{EVENT.ID}From:Zabbix.guoxh.cnRecovery subject:Zabbix 监控恢复 : {TRIGGER.NAME} !!
Recovery message:告警信息:{TRIGGER.NAME}告警主机:{HOSTNAME1}告警时间:{EVENT.DATE} {EVENT.TIME}告警等级:{TRIGGER.SEVERITY}告警项目:{TRIGGER.KEY1}问题详情:{ITEM.NAME}:{ITEM.VALUE}当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}事件ID:{EVENT.ID}From:Zabbix.guoxh.cn
  1. 报警媒介类型可以做测试

内容以附件形式发送,解决:
7. yum -y install dos2unix
8. 修改脚本(注意权限问题):

#!/bin/sh
#export.UTF-8
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
touch /tmp/mailtmp.txt
chown zabbix.zabbix /tmp/mailtmp.txt

CheckList问题列表

1. 因为加了Email监控配置导致启动子进程失败。删掉zabbix的alerts库中所有数据,去掉 管理-报警类型中的Email报警,再启动。
  Got signal [signal:11(SIGSEGV),reason:1,refaddr:0x50]. Crashing ...8996:20190530:032006.156 ====== Fatal information: ======8996:20190530:032006.156 Program counter: 0x7f3d61f4f9af8996:20190530:032006.156 === Registers: ===
2. no active checks on server [192.168.3.108:10051]: host [192.168.3.108] not found

在windows中安装agent的时候,配置文件中的hostname必须和server中的添加主机名字一致,否则会出现server端所有端口都不能再agent端访问的问题。

Grafana安装

centos:https://grafana.com/docs/installation/rpm/
默认端口3000,用户admin admin

wget https://dl.grafana.com/oss/release/grafana-6.1.6-1.x86_64.rpm
sudo yum localinstall grafana-6.1.6-1.x86_64.rpm
sudo service grafana-server start

grafana zabbix插件安装

grafana-cli plugins install alexanderzobnin-zabbix-app

grafana 配置告警

https://blog.csdn.net/loves_witness/article/details/88420422

  1. 设置grafana.init中的smtp配置
  2. 设置grafana.init中的alerting设置

grafana 日志位置

/var/log/grafana/grafana.log

DNS解析配置

/etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序

网卡监控:

ethtool eth0命令查看网卡硬件

https://blog.csdn.net/weixin_41078837/article/details/80687842

1.yum -y install qperf

2.qperf (服务端server,执行等待)

3.qperf -t 60 --use_bits_per_sec serverIp tcp_bw (客户端)

bw = 93.7 Mb/sec---------**>>>**这就是网络带宽

4.qperf -t 60 --use_bits_per_sec serverIp tcp_lat

latency = 187us --------->>>这就是网络延迟

rpm操作

rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度

Python:

安装pip

easy_install pip

安redis库:

https://github.com/andymccurdy/redis-py 下载zip

解压,进入目录

sudo python setup.py install

安mysql:

pip install pymysql

Python脚本:

\#!/usr/bin/python2.7

命令行模式和桌面模式启动切换:

1、查看

cat /etc/inittab

systemctl get-default

2、命令行模式更改为图形界面模式

systemctl set-default graphical.target

3、图形界面转为命令行模式

systemctl set-default multi-user.target

Jenkins设置

工作目录:

/var/lib/jenkins/workspace/

密码:
zhangli 123456

maven缓存仓库

/var/lib/jenkins/.m2/repository

设置环境变量

系统管理->系统设置->全局属性 增加PATH,path从系统中取。

npm:command not found问题

https://blog.csdn.net/u013201439/article/details/71425165

需要调用机器上的shell脚本,将path在执行之前重新设置一下

#!/bin/bash
export PATH=$PATH:/root/node-v12.13.0-linux-x64/bin
cd $1 && npm run build
if [ -d "./dist" ];thensudo rm -rf /data/free-web/distsudo mv dist /data/free-web/distecho "front deploy success"
fi

无法创建git(Credentials)授权用户问题

从根路径“凭据”中增加

CheckList

1. [113] No route to host错误,由于防火墙拦截造成,开放端口或者关闭防火墙即可
2. -bash: ls: command not found,soruce profile造成的,重新设置一下path就行了

export PATH=/bin:/usr/bin:$PATH

3. xshell编码

使用小地球标志设置

4. Unable to open socket file: target process not responding or HotSpot VM not

linux定时删除tmp下的pid,造成jdk工具无法使用

ffmpeg视频处理工具

可以使用推流

1. 视频转化格式

ffmpeg -i test.flv test.avi

2. 视频拼接

  • 将文件名按顺序写入文件filelist.txt
flie '1.flv'
file '2.flv'
  • ffmpeg -f concat -i filelist.txt -c copy output_set.mp4

3. m3u8格式视频下载

ffmpeg -i http://1400317442.vod2.myqcloud.com/ff307a5cvodcq1400317442/cb1403d45285890800908459177/playlist_eof.m3u8 name.mp4

如果下载各大视频网站的视频的话,可以用you-get

Linux命令使用笔记相关推荐

  1. Linux命令学习笔记

    Linux命令学习笔记 1 前言 1.1 系统版本 1.2 终端切换 1.3 快捷键 1.4 帮助文档 1.5 关机重启 2 目录命令 2.1 当前目录 pwd 2.2 切换目录 cd 2.3 查看目 ...

  2. linux小白命令,linux命令---小白笔记

    Linux命令 这是一篇小白写的笔记☺ 快捷键 pwd查看当前所在文件夹的绝对路径 ctrl+l清屏 tab键补齐内容 上下键查询之前的命令 linux的基础命令 ls ls 查看目录 -a查看所有( ...

  3. 【Linux命令Day1笔记】

    Linux命令 配套视频https://www.bilibili.com/video/BV1dt411f7TZ?p=1 Day1 笔记 快捷键 ctrl+p / ctrl + n 或者 上下箭头 可以 ...

  4. Linux命令行笔记

    常用系统工作命令 wget 使用命令行下载网络文件 "wget [参数] 下载地址" 参数 作用 -b 后台下载模式. -O 下载到指定目录. -t 最大尝试次数. -c 断点续传 ...

  5. Linux 命令学习笔记

    1. touch filename  新建一个文件 2. readlink -f  filepath 追踪符号链接的真实文件路径 3. id -u 获得当前用户的id,如果id是0,则表明是root用 ...

  6. Linux命令学习笔记之一目录与文件基本操作

    目录操作 cd:进入目录 基本格式:cd 目录名 例子: 1).在当前目录进入子目录a,输入"cd a" 2).在当前目录进入根目录下的子目录tmp,输入"cd /tmp ...

  7. linux在cd后直接显示文件格式,Linux命令学习笔记之一目录与文件基本操作

    目录操作 cd:进入目录 基本格式:cd 目录名 例子: 1).在当前目录进入子目录a,输入"cd a" 2).在当前目录进入根目录下的子目录tmp,输入"cd /tmp ...

  8. Linux命令学习笔记(一)目录操作

    目录操作 在桌面建立一个名为test的文件夹 clear 清除屏幕 pwd 查看当前工作目录 cd /home 进入 '/ home' 目录' cd ~ 打开当前用户目录 cd / 根目录 cd - ...

  9. Linux 命令使用笔记【uptime】

    uptime 命令 uptime 命令能够打印系统总共运行了多长时间和系统的平均负载.uptime 命令可以显示的信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系统在过去的1分 ...

最新文章

  1. 自己动手丰衣足食之 jQuery 数量加减插件
  2. ArcGIS for window mobile 数据打开
  3. JEPaas代码_((列表)输入字段值而改变值
  4. switch安装linux教程,Freeswitch Linux安装教程 | 【韩涛博客】
  5. mysql的两种存储方法_mysql的两种存储引擎
  6. 深度学习要多深_才能读懂人话?
  7. TIF合并Java代码
  8. Cookie 和 Session 规则
  9. 如何彻底修改SQL server的数据库名
  10. 复制百度文库及其他收费文档的方法
  11. 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
  12. linux上如何把2个或者多个显示器合并为一个显示器
  13. Samba共享服务详解
  14. cl.clus pw index.php,Application Essay 写作 第五课 Introductions and Conclus
  15. 基于stm32的减速直流电机PID算法控制
  16. python基础程序设计与面向对象程序设计_python基础——面向对象的程序设计
  17. 从一个简单的SQL来聊聊等价改写
  18. 【SSH系列】---Hibernate的基本映射
  19. 新型红包套路,论推广和运营,灰产们真是一把好手
  20. 使用 strace、tcpdump、nlmon、wireshark 探索 ethtool netlink 框架的原理

热门文章

  1. 大数据学习路线思维导图
  2. 计算机软件系统发展历史,一文带你了解操作系统发展史
  3. Day14.网络编程入门及其应用
  4. C++ 读取 HDF5
  5. COB小间距的工艺技术,cob小间距相比常规表贴(SMD)小间距有何优势?
  6. 连接高匿代理接口调用并测试是否可用
  7. 一、线性回归面试题总结
  8. python 白噪声检验-利用python实现平稳时间序列的建模方式
  9. 脑电数据的实验范式及EEGLAB分析预处理
  10. 网络原理之TCP/UDP协议