linux shell:
Linux纯干货知识总结|面试专用
linux下的shell脚本(基本)
怎样用linux命令知道系统是ubuntu还是centos或者其它
Linux查看CPU和内存使用情况
1、touch命令创建文本文件 zxt111
ls/dir命令查看路径下有的文件及文件夹
2、mkdir命令创建文件夹 (空文件夹)zxt222
ls/dir命令查看路径下有的文件及文件夹
3、文件及文件夹的删除
rm zxt111 ——仅删除文件,不可删除文件夹
rm -d zxt222 ——仅删除空文件夹
rm -r zxt222 ——递归删除文件夹zxt222(可删除非空文件夹)
删除总结:rm [选项] 文件
-f, --force 强力删除,不要求确认
-i 每删除一个文件或进入一个子目录都要求确认
-I 在删除超过三个文件或者递归删除前要求确认
-r, -R 递归删除子目录
-d, --dir 删除空目录
-v, --verbose 显示删除结果
4、进入某文件夹 cd [文件夹名] /[子文件夹名] (可使用Tab键进行补全)
返回上一级目录 cd ..
返回前一目录 cd -
返回Home目录 cd ~
5、文件的复制粘贴 : cp [选项]... 源文件... 目录
cp zxtaaa zxt111/zxt222
-a:此选项通常在复制目录时使用,保留链接、文件属性并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
复制多个文件:①通配符*②{zxtaaa,zxtbbb,...}且“,”间无空格
cp {SN.H*,SN.S*} ./smalltest/
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
6、 文件夹的复制粘贴
文件夹zxt333中包含zxtbbb文件,将文件夹zxt333全部内容复制到文件夹zxt111/文件夹zxt222下
cp -r zxt333 zxt111/zxt222
7、内存使用情况
free -m
total:内存总数 2575M
used:已经使用的内存数 777m
free:空闲的内存数 278m
shared:多个进程的共享的内存数 24m
Swap行交换分区:
把磁盘空间当做内存用,也就是windows为什么常常提示虚拟空间不足的原因.,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.linux只要不用swap的交换空间,就不用担心自己的内存太少.如果常常swap用很多,可能你就要考虑加物理内存了。
8、查看磁盘大小
df -h
如何将自己新加的硬盘挂载到虚拟机中?(root用户)
①增加的磁盘为/dev/sda fdisk /dev/sda
fdisk /dev/sda
p 查看已分区数量
n 新增加一个分区
p 分区类型我们选择为主分区
分区号选3(选择默认即可,它会有所提示)
回车 默认(起始扇区)
回车 默认(结束扇区)
t 修改分区类型
选分区3
8e 修改为LVM(8e就是LVM)
w 保存刚才创建的分区
q 完成,退出fdisk命令(有时这条命令不用输入)
q quit without saving changes 注:不保存退出;
②完成上述命令之后,进行格式化分区
reboot
mkfs.ext3 /dev/sda3
③添加新LVM组到已有的LVM组,实现扩容
我自己的是centos,以下所有涉及到cl的都输入centos
lvm 进入lvm管理
lvm>pvcreate /dev/sda3 这是初始化刚才的分区,必须的
lvm>vgextend cl /dev/sda3 将初始化过的分区加入到虚拟卷组centos ,对Volume group进行修改
(卷和卷组的命令可以通过vgdisplay查看;
不是每个虚拟机命令都是cl,这个具体要看你的虚拟机文件系统配置,如果是cl-root,可以直接使用命令,
否则需要按照自己的文件系统进行一些修改。我自己的是centos)
lvm>vgdisplay -v
lvm>lvextend -l+21556 /dev/mapper/cl-root 扩展已有卷的容量,对Logical volume进行修改
(21556 是通过vgdisplay查看的free的大小,21556以及cl请具体查看后修改)
lvm>pvdisplay 查看卷容量Physical volumes,这时你会看到一个很大的卷了
lvm>quit 退出
④接下来将添加的硬盘,添加至根分区(我的Logical volume中可看到LV Path为 /dev/centos/root) lvextend -l +100%FREE /dev/cl/root
至此卷扩容完成
⑤对文件系统扩容操作 xfs_growfs /dev/mapper/cl-root
⑥df -h
查看,虚拟机存储空间扩容成功!!!
9、分区挂载
手动挂载 sudo mount /dev/sda4 /home/onesea/Mini2440
假设新分区为 /dev/sda4 , 挂载点为 /home/onesea/Mini2440
自动挂载
若希望开机时自动挂载, 可在/etc/fstab最后一行添加:
/dev/sda4 /home/onesea/Mini2440 ext4 defaults 0 0
网络(局域网)存储挂载
sudo mount -t nfs ip地址:/mnt/miniseed_backup /home/zxt/p200
假设要将 ip地址:/mnt/miniseed_backup 挂载到 /home/zxt/p200上
10、运行进程的显示与终止
最常用:
查找进程并列出信息 ps -ef | grep ispaq
杀死进程
kill -9 PID
查看运行的java进程
jps
其他:
查询所有进程
ps -A
查看非root运行的进程
ps -U root -u root -N
查询某个用户(如hadoop)开启的进程
ps -u hadoop
查看运行中系统进程的动态实时视图
top
(输入q退出top视图,按h进入帮助)显示进程的树状图
pstree
获得线程信息 ps -efl
与 ps axms
ps -efl
ps axms
查找进程——查找当前正在运行的进程并列出符合条件的进程ID,如显示firefox的进程IDpgrep firefox
11、测试指令运行时间
time能做的不仅仅是测量运行时间,还可以测量内存、I/O等的使用情况
time命令最常用的使用方式就是在其后面直接跟上命令和参数:
time <command> [<arguments...>]
在命令执行完成之后就会打印出CPU的使用情况:
real 0m5.064s <== 实际使用时间(real time)
user 0m0.020s <== 用户态使用时间(the process spent in user mode)
sys 0m0.040s <== 内核态使用时间(the process spent in kernel mode)
time命令跟上-p参数可以只打印时间数值(秒数),不打印单位。
示例:time find . -name "mysql.sh"
time更为强大的指令/usr/bin/time:
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose] [--portability] [--format=format] [--output=file] [--version] [--help] command [arg...]
示例:/usr/bin/time -v find . -name "mysql.sh"
12、用户
用户切换:
拥有root权限——sudo
至hadoop——su hadoop
13、简单bash编程
在非root用户下,f="SC.AXI. BHE.2020.122.mseed"
,echo $f
14、修改文件权限
chmod [options] mode files
-R,--recursive可递归遍历子目录,把修改应到目录下所有文件和子目录
对于mode多数用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
chmod u+x file 给file的属主增加执行权限
chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file 上例的另一种形式
15、linux中($a)数组
A=(a b c def)
#定义数组
echo ${A[@]}
#把数组按字符串显示输出,屏幕显示:a b c def
len=${#A[*]}
#数组的长度,屏幕显示:4
A[3]='vivian'
#改变数组元素的值
echo ${A[*]}
#屏幕显示:a b c vivian
我用过的:
OLD_IFS=${IFS}
IFS=" "
arr=($a)
IFS=${OLD_IFS}
for f in ${arr[@]}
do
sudo chmod -R 755 ${f}
done
16、其他
获取GitHub等网页链接上的内容: git clone +网址 或者 wget +网址
VI中的多行删除与复制:
光标所在行,dd
光标所在行以下的N行,Ndd
网友评论