Linux命令使用笔记
工具网站(包含操作系统镜像)
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 -i 或 sudo 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 |
- chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
- 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
- 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
vi /etc/systemd/logind.conf
HandleLidSwitch=ignore
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操作保证格式正确
vim /etc/sudoers
root ALL=(ALL) ALL下增加 username ALL=(ALL) ALL
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
- 使用以下网页工具解析查看 raw.githubusercontent.com 的IP地址
https://site.ip138.com/raw.githubusercontent.com/,可以看到国内可用的 IP 为 151.101.76.133 - 修改 hosts
151.101.76.133 raw.githubusercontent.com
- 再运行命令则正常访问
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 显示详细的处理过程
硬连接
多个文件名指向同一索引节点,节点号相同,删除一个不影响另外一个访问
- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
命令:ln target linkFile1
软连接
符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。数据块中存放的只是目标路径的路径名
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
命令:ln -s target linkFile2
这里有两点要注意:
- ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
- 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
- server端找到配置文件位置
whereis zabbix
- 进入fonts配置,将本地的ttf文件拷贝到此目录
cd /usr/share/zabbix/fonts
scp simkai.ttf ./
chmod 777 simkai.ttf
- 修改页面配置,将原来的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
- zabbix-server所在主机ip,多个的话使用逗号分隔:
Server=
- 请求超时时间(秒):
Timeout=
- 开启自定义监控脚本:
UnsafeUserParameters=1
- 自定义监控配置语法,建议在新的文件中写引入Include进来:
UserParameter=key,command
- 查看Include是否引入
验证:
zabbix_get -s 127.0.0.1 -p 10050 -k “system.cpu.load[all,avg1]”
其中
-s 客户端的IP
-p 客户端端口,默认10050
-k 监控项的key
邮件报警
- linux(centos7)本身带的mailx,命令:
echo "content" |mail -s "subject" email
- 脚本放到指定目录,从配置文件中指定
AlertScriptsPath=/usr/lib/zabbix/alertscripts
- 配置报警媒介,选脚本,脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
- 配置增加用户,设置报警媒介,权限为超级管理员
- 配置动作,发送内容、发送的用户等
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
- 报警媒介类型可以做测试
内容以附件形式发送,解决:
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
- 设置grafana.init中的smtp配置
- 设置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命令使用笔记相关推荐
- Linux命令学习笔记
Linux命令学习笔记 1 前言 1.1 系统版本 1.2 终端切换 1.3 快捷键 1.4 帮助文档 1.5 关机重启 2 目录命令 2.1 当前目录 pwd 2.2 切换目录 cd 2.3 查看目 ...
- linux小白命令,linux命令---小白笔记
Linux命令 这是一篇小白写的笔记☺ 快捷键 pwd查看当前所在文件夹的绝对路径 ctrl+l清屏 tab键补齐内容 上下键查询之前的命令 linux的基础命令 ls ls 查看目录 -a查看所有( ...
- 【Linux命令Day1笔记】
Linux命令 配套视频https://www.bilibili.com/video/BV1dt411f7TZ?p=1 Day1 笔记 快捷键 ctrl+p / ctrl + n 或者 上下箭头 可以 ...
- Linux命令行笔记
常用系统工作命令 wget 使用命令行下载网络文件 "wget [参数] 下载地址" 参数 作用 -b 后台下载模式. -O 下载到指定目录. -t 最大尝试次数. -c 断点续传 ...
- Linux 命令学习笔记
1. touch filename 新建一个文件 2. readlink -f filepath 追踪符号链接的真实文件路径 3. id -u 获得当前用户的id,如果id是0,则表明是root用 ...
- Linux命令学习笔记之一目录与文件基本操作
目录操作 cd:进入目录 基本格式:cd 目录名 例子: 1).在当前目录进入子目录a,输入"cd a" 2).在当前目录进入根目录下的子目录tmp,输入"cd /tmp ...
- linux在cd后直接显示文件格式,Linux命令学习笔记之一目录与文件基本操作
目录操作 cd:进入目录 基本格式:cd 目录名 例子: 1).在当前目录进入子目录a,输入"cd a" 2).在当前目录进入根目录下的子目录tmp,输入"cd /tmp ...
- Linux命令学习笔记(一)目录操作
目录操作 在桌面建立一个名为test的文件夹 clear 清除屏幕 pwd 查看当前工作目录 cd /home 进入 '/ home' 目录' cd ~ 打开当前用户目录 cd / 根目录 cd - ...
- Linux 命令使用笔记【uptime】
uptime 命令 uptime 命令能够打印系统总共运行了多长时间和系统的平均负载.uptime 命令可以显示的信息显示依次为:现在时间.系统已经运行了多长时间.目前有多少登陆用户.系统在过去的1分 ...
最新文章
- 自己动手丰衣足食之 jQuery 数量加减插件
- ArcGIS for window mobile 数据打开
- JEPaas代码_((列表)输入字段值而改变值
- switch安装linux教程,Freeswitch Linux安装教程 | 【韩涛博客】
- mysql的两种存储方法_mysql的两种存储引擎
- 深度学习要多深_才能读懂人话?
- TIF合并Java代码
- Cookie 和 Session 规则
- 如何彻底修改SQL server的数据库名
- 复制百度文库及其他收费文档的方法
- 2021年江苏省高考数据统计:江苏省普通类报名人数30.9万人,本土167所高校(2所985大学)
- linux上如何把2个或者多个显示器合并为一个显示器
- Samba共享服务详解
- cl.clus pw index.php,Application Essay 写作 第五课 Introductions and Conclus
- 基于stm32的减速直流电机PID算法控制
- python基础程序设计与面向对象程序设计_python基础——面向对象的程序设计
- 从一个简单的SQL来聊聊等价改写
- 【SSH系列】---Hibernate的基本映射
- 新型红包套路,论推广和运营,灰产们真是一把好手
- 使用 strace、tcpdump、nlmon、wireshark 探索 ethtool netlink 框架的原理