Linux基础知识

Linux基础知识

系统服务:
systemctl start [ restart  | stop |  status ] <服务名>
查看全部服务:
systemctl list-dependencies <图形 | 文本>【已知图形与文本】
重启ssh:systemctl restart ssh 	
      ssh:systemctl  enable ssh
运行级别
查看目录默认运行的级别
systemctl get-default
设置成开机3状态
systemctl set-default multi-user.target
设置成开机5状态
systemctl set-default graphical.target

init 运行级别的切换
init  命令(0123456定义)
密码文件存放路径		cat/etc/shadow
用户的关键信息存放路径	cat/etc/passwd


	命令:( 滚动)cap
	命令:more
	绝对路径 从根目录开始
	...
	..上一层目录
	.当前目录


基本指令:
pwd 	查看路径
cd	切换路径
mv 
rm 	删除指令
mkdir	创建新目录
chmod	修改权限
chown	修改文件的所有者
chgrp	修改文件所在组
ls -ahl 	查看属性及相关信息
top 	显示系统的动态数据
ifconfig 	显示系统的网卡配置信息
pidof 	查看文件的编码
tr 	替换文本中的信息
head 	显示文本前多少行信息
tail 	显示文本后多少信息
last 	历史用户登录信息
history 	历史用户输入指令信息
uname -a 显示用户得全名
uptime 	显示系统负载状态 
date	显示时间
nohup 	<指令> 后台执行脱离用户登陆终端
reboot	重启
关机:
poweroff
shutdown
shutdown -h <+时间> “还有一分钟关机请退出”
halt	暴力关机
显示系统进程:
ps [-a][-l][-u][-x]
	ps   axjf  显示进程树
	ps   -elf  显示进程的优先级
	pstree    以树状结构显示进程
查看后台进程:
jobs
kill 	结束某些进程	
killall	结束所有进程
kill    -9    	无条件执行
free -m	显示当前系统内存使用信息
who 	查看当前用户
sosreport	收集系统配置及架构信息并输出诊断文档
二通	ls \ | tee	\temp\ab.txt【显示内容 | 并保存文件】‘tee’
tree  /	显示树状目录
od	查看二进制文件
diff	比较两个文件不同
查看行数、字节数、字数:
wc    [-l]	只显示行数
wc    [-w]	只显示单词数
wc    [-c]	只显示字节数
查看文件具体信息以及时间:
stat <文件名>
提取文本字符:
cut [参数] 文本
例如
      cut   -d: -f1 /etc/passwd【提取以冒号:为间隔符号的第一列内容】
复制文件或目录:
cp [选项]  源文件  目标文件
  	---选项---	
【-p】保留原始文件属性
【-d】若对象为链接文件,则保留该链接文件属性
【-r】递归持续复制(用于复制)
【-i】若目标文件存在则询问是否覆盖
【-a】相当于-pdr (p\d\r为上述参数)
剪切文件或将文件重命名:
mv      [选项]      源文件     [目标路径|目标文件名]	
删除文件或目录:
rm      [选项]       文件
[-f]	强制删除
[-r]	删除目录
按照指定大小和个数的数据块来复制文件或转换文件
 dd      [参数]
【if】    	输入的文件名
【of】	输出的文件名
【bs】	设置每个‘块’的大小
【count】设置要复制‘块’的个数
例:  dd    if=/etc/wicked    of=aa   bs=100M      count=3
拆分文件的大小:
split  -b  [大小{10M}]   <文件名>  《分解后文件名开头》
文件的合并:
cat     <文件名1><文件名n>  >  <合成文件名>
paste  <文件名1><文件名n>      合并两个文件内容
file		查看文件类型
time <命令>	查看命令用时

环境变量
显示环境变量 echo$环境变量名
/etc/profile 	影响所有用户
su
1、完全身份转换
	su - 用户名
2、部分身份转换
	su 用户名
~/.bash_profile  	影响当前用户

echo  -n	     	不换行
echo  $ SHLVL	查看shell层
env		显示所有变量(可以筛选)
写入全局变量:
export <全局变量名> = " 内容 " 
[分号 ; ] [与 && ] [或 || ]
pwd;data;date;		【顺序输出 返回值为最后一个】
pwd && data  && date	【遇到错误输出】
pwd ||  data  ||  date 	【遇到正确输出】
echo  $ ?	      	查看返回值
sync	同步缓冲    【保存当前信息】

修改属性:
chgrp  【组名】【文件名】  修改文件所在的组
chown 【用户名】【文件名】 修改文件的所有者  
chmod【权限-八进制】<文件名>  修改文件的权限

用户配置指令
useradd 	添加用户
userdel    删除用户
usermod 【-选项】【用户名】 一些属性的配置
-g 修改组
-d 修改目录
......
usermod [{选项}]  <用户名>
 选项:
-u<用户ID>
-d<家目录>
-g<主要主目录ID>
-G<附加组群ID,附加组群ID,....>
-s <登录SHELL>
-c <备注>
-a : 追加-G制定的附加组群
-l  <新用户名>

创建文件目录:
touch	新建文件【-a“修改读取时间”,-m“修改时间”,-d“前二者同时修改”】{文件}
mkdir	创建目录【---选项】{目录}
外部命令:
sed -i 's|<被替换的内容>|<替换成的内容> | g’<目标文件名>

添加组:
groupadd 【[-g gid [-o]] [-r] [-f] <组名>】
选项:
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 500;
-K:覆盖配置文件 "/ect/login.defs";
-o:允许添加组 ID 号不唯一的工作组。
-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。
当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。
创建组:
1)groupadd   <文件名>
2)groupadd      -g     555   <文件名>             
3)groupadd      -g       0        -0       <文件名>
删除组:
groupdel <组名>
修改组属性:
1)groupmod -g        1666          <文件名>
2)  groupmod -n   <新文件名>    <原文件名>
3)  groupmod -n   <新文件名>    -g    1666    <原文件名>
查看组:
1)more  /etc/group
2)cat /etc/group

配置密码
加锁
passwd  -l (用户名)
解锁
passwd  -u(用户名)

修改密码
passwd (用户名)

删除密码 
passwd -d  (用户名)
通过其他方法改密码:
echo "密码" | passwd --stdin (用户名) |管道

显示别名:
alias
alias ='系统叠加的指令'   
例如     alias < lo>='ls -ahl' 【不能有空格】
unalias	删除别名

其他人使用时,更改文件中的配置
ls -ll /etc/sudoers
sudo使用方法
yum -y install sudo
/etc/sudoers --->加一行    用户名  ALL = (ALL)ALL

文件操作【打包】
打包) 	tar -cvf (打包名).tar  (打包内容)
解包)	tar -xvf(包名).tar
显示包)	tar -tvf (包名)
压缩包{gzip型})	tar -czvf (压缩名).tar.gz(打包内容)
解压并解包)	tar -xzvf (压缩包名)
压缩包{bzip2型})	tar -cjvf (压缩名).tar.bz2 (打包内容)
解压并打包)	tar -xjvf (压缩包名)
         【压缩】
gzip   <文件名>	<文件名>.gz	【gzip -d】解压
bzip2 <文件名>	<文件名>.gz
xz      <文件名>	<文件名>.xz  【压缩效果最好】
xxd   <二进制文件名>  >   
xxd -r  >  <二进制文件名>   【od查看二进制文件】

文件搜索命令: greps
格式:grep     [选项]   [文件]
-b       将可执行文件当作文本文件来搜索
-c       仅显示找到的行数
-i        忽略大小写
-n       显示行号
-v       反向选择----仅列出没有“关键词的行”
指定查找文件: find
格式    find   [查找路径]   寻找条件    操作
-name	匹配名称
-user	匹配所有者
-group	匹配所有组
找文件来删除:
	find <目标路径>   -name  “文件名”-exec   rm  -f   {} \;

重定向:
输入重定向
命令   <     文件		将文件作为命令的标准输入
命令   <<   分界符		从标准输入中读入,直到遇见分界符才停止
命令   <文件1>   文件2	将文件1作为命令的标准输入并将标准输出都文件2
输出重定向
命令   >     文件
命令  2>    文件
命令   >>      文件
命令   2>>    文件
命令   >>     文件  2>&1    或    命令  &>>   文件 
//    将标准输出与错误输出共同写入文件中(追加到原有内容的后面)
管道符:
同时完成   一阶操作    |   二阶操作
命令行的通配符:
(*):  匹配零个或多个字符
(?):匹配单个字符	
常用的转义字符:
与 · echo 连用
(\):  使反斜杠后边的一个变量变为单纯的字符串   
("):  转义其中所有的变量为单纯的字符串
(""): 保留其中的变量属性,不进行转移处理
(``):  把其中的命令执行后返回结果

查看磁盘
fdisk -l  	列出系统中所有的储存设备
df -v	显示目前系统分区使用情况
fdisk -l	查看磁盘 与 USB盘分区
df    -T	查看已挂载分区的使用情况
du   -sh	/etc统计目录占用磁盘大小

VIm编辑器的使用网上有 
编写shell脚本“文件名.sh”

挂载磁盘方法
【新建一个虚拟磁盘;fdisk -l查看磁盘地址;fdisk / */*分配区间;(mkfs.xfs格式化 +路径)
mkdir /*创建个目录与磁盘构建关联 mount /*/*(磁盘路径)   /* 目录名;df -h或-v查看;
vim /etc/fstab ,进行输入磁盘路径永久挂载  (卸载则删除输入的路径)
资源管理:
  【查看CPU运行时间】
uptime	
more  /proc/cpuinfo     查看CPU 的参数指标
sar -u ALL 10 5 	     以 10s 为周期,连续统计5次CPU的(使用情况)
top  
-----------------------------------------------
  【查询内存使用方面的简要信息】
free 	
more   /proc/meminfo 查看内存的参数指标
vmstat   20  8       以 20s ,8次 内存的(动态使用情况)
sar     -r   30   60     以  30s,60次内存(使用情况)
-----------------------------------------------
优先级:
nice -n <优先级> <命令>
nice -n -15 ls -R /	以优先级 -15 运行程序 ls -R
renice		调整进程的优先级

renice 等很多【组、用户、进程号】
kill     <信号>    <目标>

  临时退出    ctrl +z
  放置后台     & 
  暂停	       bg 【页面】
  前台显示    fg  【页面】例如:【+1】
  查看后台进程    jobs
  nohup <指令> 后台执行脱离用户登陆终端	

修改登录权限指令 (修改端口号:找到Port 改为指定值【依旧重启该服务】)
1)修改 vim /etc/ssh/sshd_config 
2)修改 PermitRootLogin 【yes | no】允许 | 禁止 默认yes
3)重启该服务:systemctl restart sshd
4)使可行:systemctl enable sshd
5)指令:ssh <地址 | 服务链接>    提示错误 

添加登录安全秘钥验证
1)添加秘钥:ssh-keygen	a.回车  b.密码  c.再次输入密码
2)传送给远程主机:ssh-copy-id <主机地址>
3)修改 vim /etc/ssh/sshd_config
4)修改PubkeyAuthentication	【输入钥匙即可登录】是否开启 默认no	 
4)修改passwordAuthentication 【没钥匙必须要有密码验证】| 验证 默认yes	
5)重启该服务:systemctl restart ssh
6)指令:ssh <地址 | 服务链接>    密码验证直接登录(无需输入root密码)

部署磁盘列阵:指令 mdadm
	【参数】
	-a	检测设备名称
	-n	指定设备数量
	-l	指定RAID级别
	-C	创建
	-v	显示过程
	-f	模拟设备损坏
	-r	移除设备
	-Q	查看摘要信息
	-D	查看详细信息
	-S	停止RAID磁盘列阵
	-x	代表有一块备份盘
一、创建与挂载
1)预设好五个虚拟磁盘
2)fdisk -l | more 查看 磁盘名称
3)创建mdadm -Cv  /dev/md0 -a yes -n 4 -l 10 <四个磁盘名称(注前者名称可更改)>
4)格式化 mkfs.ext4	 /dev/md0
5)创建挂载点并挂载	   mkdir /RAID
		   mount /dev/md0 /RAID
		   df -h   【查看挂载情况】
6)查看磁盘列阵信息mdadm -D /dev/md0 
7)永久挂载磁盘	echo "/dev/md0 /RAID /ext4 defaults 0 0"   >>  /etc/fstab
二、损坏磁盘阵列及其修复
1)模拟一个磁盘损坏 mdadm /dev/md0 -f <损坏的磁盘>
2)mdadm -D /dev/md0
3)修复磁盘    umount /RAID
 	      mdadm /dev/md0 -a <需要安装的磁盘>
	      mdadm -D /dev/md0
	      mount -a
三、磁盘阵列与备份盘
1)创建mdadm -Cv  /dev/md0 -n 3 -l 5 -x 1 <四个磁盘名称(注前者名称可更改)> 
2)与后与前{一、二}类同
3)模拟损坏查看后会有 一个faulty   的磁盘


周期性定时任务
crontab -e   
一次性定时任务:指令 at
at [-f file] time
at  now  +10 minutes <<< “wall lil.txt”     再过10分钟广播文件lil.txt
at <22:22><月/日/年>	
     at >可写很多内容,【未来的事,规定的时间去做】
     at >
     Ctrl+D ==
at -f  /opt/file.cmd 4am tomorrow	明天上午四点执行 .cmd中的命令
at -l	列出全部的一次性定时任务
at -r  6 	删除6 号定时任务
batch <<< "bzip2  -9   bigfile.dat"	在系统平均负载较低(<1.5)时执行压缩命令

【iptables】与【firewalld】防火墙:
IPtables:
-L	查看规则链	等【https://blog.51cto.com/doublelinux/1960912】
-F	删除规则链
ping -c      <次数>        	查看动态网络数据
iptables -P   INPUT   DROP   	                       规则链设置为拒绝状态
iptables -P   INPUT   -p    icmp   -j   ACCEPT  规则链设置为允许状态
iptables -D  INPUT  1		删除刚加入的规则链
iptables -P   INPUT   ACCEPT		设置默认允许状态
规则链设置为只指定的网段主机访问本机 拒绝其他主机流

量:
iptables -I INPUT -s 192.168.43.137/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT

向规则链中添加拒绝所有人访问本机12345端口的策略:
iptables -I  INPUT    -p tcp  --dport  12345  -j  REJECT
iptables -I  INPUT    -p upd --dport  12345  -j   REJECT
向规则链中添加拒绝192.168.43.137主机访问本机80端口(web服务)的策略规则:
iptables -I  INPUT    -p  tcp   -s 192.168.43.169  --dport  80  -j  REJECT
向规则链中添加拒绝所有主机访问本机1000~1024端口的策略规则:
iptables -A  INPUT    -p tcp  --dport  1000:1024  -j  REJECT
iptables -A  INPUT    -p upd --dport  1000:1024  -j   REJECT

使防火墙永久生效:
service iptables save
 
firewalld:
firewall-cmd --get-default-zone	查看当前使用域
等等。。。。

使用ssh服务远程管理主机
nmtui	命令运行网络配置工具【修改手动】
systemctl  restart network	 【重启服务】
nmcli   connection  show	 【查看网络信息或网络状态】

编写shell脚本:
变量:
a = 10
a = user/bin
echo   $a
自定义变量:
环境变量:
	数组:
	U = (342 342 342 432)
	${U[1]}	第2个元素 342
	${U[*]}	显示所有元素
	${#U[*]}	显示元素个数
	${#U[2]}	第二个元素的个数

特殊变量:
	$?	上一条shell命令执行结果,一般执行正确返回0,错误非零
	$$	执行当前shell的进程的进程号
	$#	显示参数的个数
	$0	命令本身
	$1...	第几个参数
	$*	全部参数
算术运算:
	1、v1 =1 v2=2
	     let v2=v1+v2   或  let v3=$v1+$v2
	     echo  $v3
	2、$((v1+v2))
	3、expr $v1 + $v2
	引用:将命令的结果作为值来使用
	v3 =`expr $v1 + $v2`
测试语句:	
	判断结果是真是假
===============================
if语句
	if  [。。]	:then
		语句序列
	fi
===============================		
	if  [。。]	:then
		语句序列一
	else	
		语句序列二
	fi
===============================					
	if  [。。]	:then
		语句序列一
	elif  [。。]:then
		语句序列二
	elif  [。。]:then
		语句序列N
	else
		语句序列N+1
	fi
===============================
case分支语句
	case  $ 1 in	【输入的第一个参数,符合某条件,输出某值】
	[0-9])  echo "digital"   ;;
	[a-z])  echo "lower char"  ;;
	*)	【*)==default】
	         echo"other"  ;;
	esac	
===============================
for循环
	语法一:
	for i in $*
	do
		echo -n $i
	done
	语法二:
	total = 1
	for(( i = 1; i<10 ;i =i+1) )
	do
	      [ `expr $i % 2` -eq 0 ] && continue
	      total = `expr ${total}  \*  $i`
	done
	echo ${total}
===============================
while循环
	while list ; do list ; done
函数
1、function 函数名{。。}
2、函数名(){。。}




你可能感兴趣的:(笔记,linux,c语言)