每天2分钟学习unix/linux系统shell编程(七)ps,sleep,kill,export
本文旨在简要清晰地介绍Unix/Linux系统中四个重要的shell命令:ps、sleep、kill、export,以及主要目录的说明。
1.Shell命令:psps命令是Unix/Linux系统中用来查看当前系统所有进程的基本命令。
用法如下:
-e:列出所有当前正在运行的进程。
-a:查看所有进程,包括其他用户的进程。
-x:在没有控制终端的情况下查看进程。
-f:提供完整格式显示,包括详细信息。
使用示例:配置管道|和grep来搜索感兴趣的进程。
2.Shell命令:sleepsleep命令用于暂停当前进程指定的时间。
用法示例:sleep30表示休息30秒。
kill命令用于终止进程。
可以通过进程ID(PID)指定要终止的进程。
常见信号包括SIGINT(中断)、SIGTERM(终止)等。
查看man7signal以获取对该信号的进一步解释。
export命令用于设置环境变量并使其在后续子shell中保持有效。
使用示例:exportPATH=/usr/local/bin:$PATH。
-/boot:包含系统启动所需的相关文件。
-/tmp:存放系统启动时产生的临时文件或运行时产生的临时文件。
-/mnt:用于挂载其他系统子目录。
-/lib:包含系统启动运行时所需的库文件。
-/proc:虚拟文件夹,提供有关系统当前状态的信息,例如正在运行的进程、内存使用情况和硬件状态。
-/dev:将所有设备文件保存到系统中。
-/var:保存系统修改的数据,包括其他进程和模块的数据或者注册表数据。
-/root:root用户的主目录。
-/home:一般用户的主目录。
-/etc:系统配置文件所在目录。
-/bin:存放可执行文件。
-/sbin:存放系统的可执行程序。
本文最后介绍了Unix/Linux系统的shell命令和根目录,为下一期深入学习shell脚本编程做铺垫。
每天2分钟学习unix/linux系统shell编程(六)find,netstat,ln,管道
本文旨在深入研究Unix/Linux系统中常见的几个shell命令:find、通配符、netstat、ln和pipe。首先,我们探索使用find命令。
它的作用是根据一定的条件在文件系统中查找匹配的文件。
使用示例包括但不限于指定目录范围、文件名模式和文件属性。
接下来,我们向shell引入了通配符。
通配符是一系列特殊字符,用于在命令中匹配文件名以实现批量操作。
例如,*代表字符的任意组合,而?代表单个字符。
接下来,我们将重点关注netstat命令。
它用于查看网络连接、路由表和网络接口统计信息。
通过管道(|)与grep命令的结合,我们可以过滤网络连接状态的具体信息,提高运行效率。
ln命令涉及到文件的链接。
创建文件之间的链接,分为硬链接和软链接(符号链接)。
硬链接与多个文件名共享同一个索引节点,删除链接文件不会影响源文件,但软链接只存储目标文件的路径,以方便移动文件。
最后我们讲解了shell管道的概念和应用。
管道使用前一个命令的输出作为下一个命令的输入,以实现命令链中高效的数据传输。
使用示例演示了如何利用管道来处理复杂数据。
掌握这些命令的使用对于提高Linux系统上文件操作、网络管理和编程开发的效率至关重要。
熟练使用它们将有助于提高你的Linux技能,为后续深入学习Linux环境变量、目录结构和文本编辑工具(如vi)打下坚实的基础。
创建一个script,Linuxshell脚本
在shell中,使用if、then、elif、else、fi等命令来实现分支控制,类似于C语言。这些流程控制语句由多个shell命令组成。
例如:if[-f~/.bashrc]then~/.bashrcfi实际上由三个命令组成:if[-f~/.bashrc]then~/.bashrc和fi。
如果一行写多条命令,必须用分号分隔;之后,当出现换行且命令未完成时,shell会自动续行并执行下一行作为命令。
需要注意的是命令和参数必须用空格分隔。
在命令内,参数形成子命令。
如果子命令的ExitStatus为0(表示true),则执行下一个子命令;如果ExitStatus不为0(表示false),则应用以下elif、else或fi。
如果后面的子命令是测试命令,也可以是其他命令。
Shell脚本没有花括号来表示语句块,因此fi表示语句块的结束。
例如:#!/bin/shiff[-f/bin/bash]tenecho"/bin/bashisNOTafile"fi还有一个特殊的命令叫做空命令:什么都没有,但ExitStatus总是true。
可以通过/bin/true或/bin/false获取true或false退出状态。
例如:#!/bin/shif::thenecho"alwaystrue";fi请参阅另一个示例:#!/bin/shecho"Isitmorning?pleaseansweryesorno."readYES_OR_NOif["$YES_OR_NO"="Yes"];thenecho"Goodmorning!"elf["$YES_OR_NO"="NO"];thenecho"GoodPM!"elseecho"Sorry,$YES_OR_NOnotrecognized.Enteryesorno."exit1fiexit0本例中的read命令用于让用户输入一个字符串并存储它。
shell变量中的字符串。
Shell也有&&和||。
提供语法,类似于C语言中的简写功能,常用于链接两个命令:test"$(whoami)"!='root'&&(echoyouareusinganon-privilegedaccount;exit1)&&equalsteaser if ,和||。
&&和||它们用于组合两个命令,而-a和-o仅用于组合测试表达式中的两个测试条件。
例如:test"$VAR"-gt1-a"$VAR"-lt3从以下脚本test"$VAR"-gt1&&t"$VAR"-lt3您可以使用这些技术构建不同的shell脚本。
活动。
Linux命令shell从入门到精通学习笔记之1文件安全与权限
Linux命令(shell)从入门到高效学习笔记1文件安全与权限,学习Linux命令的朋友可以参考1.ls-l命令:
第一位文件类型指向:D目录。
符号链接(指向另一个文件)。
S套接字文件。
B块设备文件。
C字符设备文件。
命名管道文件。
-普通文件,或者更准确地说,不属于上述任何类型的文件。
下面的连续九位数字表示文件的读写权限:rwx:文件所有者的权限,这是前三位r-x:同组用户的权限,这是中间的三位数字r-x:其他用户的权限,这是最后三位
2新建文件(文件夹)的权限
目录:
可以看到新创建的目录myshell的权限为:rwxr-xr-x,即:
Onvar用户有读、写、执行权限,组和其他用户有读、执行权限。
文件:
可以看到,新创建的文件myfile的权限为:rw-r--r--。
当文件新建时,出于安全原因,将不允许执行。
文件权限修改:
#chmod777myfile//给所有用户所有文件权限。
#chmoda-xmyfile//获取所有用户的执行权限(注意a-x、-x前面不能有空格)。
chmodu+x,go-wmyfile//授予文件所有者执行权限,并检索其他用户的写入权限3chmod命令有两种模式:符号模式而绝对模式
符号模式:
#u:fileowner#g:同组用户
#o:其他用户
#a:所有用户
+添加权限
-恢复权限
例如:
chmoda-xmyfile//拒绝所有用户文件执行权限
chmodog-wmyfile
chmodg+wmyfile
chmodu+xmyfile
chmodgo+xmyf
chmodu+x,o-wmyfile
完整模式:
004可读
002可写
001可执行
000无权限
chmod750myfile
为文件myfile添加权限:
7=4+2+1(所有者可以读、写、执行)
5=4+1(同组用户可以读、执行)
0=0(其他用户没有任何权限)
如果在目录上执行:
chmod740*
表示是否将该目录下的所有文件都赋予740权限,但在未来新目录的权限仍将是默认的rw-r--r--
4目录权限
对于目录,这意味着:
读取权限:可以列出该目录下的文件
写权限:可以创建或删除该目录下的文件
执行权限:可以搜索或进入该目录目录的权限就是文件的权限在目录中。
将覆盖权限。
例如,如果目录docs具有以下权限:
并且其中的文件具有权限:
那么Administrators组中的用户将无法编辑该文件,因为它不在它所在的目录中。
他没有这样的权利。
该文件任何用户都可以读取,但由于其所在目录没有给Administrators组的用户授予执行权限,因此该组的用户将无法访问该目录,并会收到“访问受限”错误消息。
5.suid和guid(了解一下)
suid的意思是如果一个用户在他的shell脚本上设置了这个权限,那么当其他用户执行这个脚本的时候如果是的话那么也会有其所有者的相应许可。
如果文件myfile的权限是741,要为其设置suid,只需在其权限号前加4即可(就是guid加2,如果都设置了,则4+2=6),
6./etc/passwd文件
该文件列出了系统合法用户的相关信息。
7.chown和chgrp
chown:如果更改后无法检索文件,文件所有者和管理员可以使用此命令更改文件的所有权。
要回收它,您应该向管理员寻求帮助。
例如:
将myfile的所有者从root更改为用户zhy(zhy在/etc/passwd中必须是合法的)。
chgrp:更改文件所属的组。
例如:
将myfile所在组从root更改为zhy组。
(
#groups
查看当前登录用户组中的所有成员。
#id
查看当前登录的用户信息
#whoami
查看当前登录系统的用户
#groupszhy
查看用户zhy所属的组以及该组的成员。
功能为系统管理员在系统管理上提供了很大的便利,但安全性也值得关注,例如,如果用户访问了系统管理最重要的,就允许最重要的被访问。
用户必须有独立的用户组,或者用户下的文件的权限是完全私有的,但root用户组一般不应轻易添加普通用户;
8.umask命令
用户登录系统后,其创建的文件具有默认的权限。
该权限可以由管理员在用户登录后配置,也可以使用umask命令自行配置。
在退出shell或使用另一个umask命令之前,此配置一直有效。
一般来说,umask命令是在/etc/profile文件中设置的。
每个用户登录时都会引用该文件,因此如果要更改所有用户的umask,可以将其添加到其中。
这个文件。
如果要永久设置umask值,请将其放入$home目录中的.profile或.bash_profile文件中。
umask值和权重:
通过:
#umask
命令查看当前umask值(最后三位):
可以看到,当前的umaks值为022。
从上表可以知道,与umask相关的文件权限为644,目录权限为755。
如果没有上表,还有另一种计算方法:
777:rwxrwxrwx
022:----w--w-
777:rwxrwxrwx
022:----w--w-
777:rwxrwxrwx
022:----w--w-
取上面两行不匹配的位即可获取目录权限:
rwxr-xr-x
将值改为:755(目录权限)
然后计算上面的这样做在结果(rwxr-xr-x)中,将x位替换为-,这是文件权限:
rw-r--r--
替换它值为:644(文件权限)
如果你想改变系统umask值,你可以这样做可以这样做:
#umask007
示例:
正如您所见,是的,文件权限确实已更改。
9.符号链接
这是一个指向文件的指针,据我了解,它是windows下的快捷方式:
/usr/中的.profile。
local/menu/sales.profile的快捷方式,这非常方便,例如,如果我们有多个用户,比如说50个,我们可以为每个用户创建一个.profile文件,全部指向同一个sales。
.profile文件,以后我们可以修改sales.profile,而不必修改每个用户的配置文件。
个人资料已修改。
创建符号链接的命令格式:
#ln[-s]source_pathtarget_path
source_path是要指向的文件。
target_path是指针(快捷方式)
示例:
#ln-s/usr/opt/monitor/regstar/reg.log/var/adm/logs/monitor.log
在新安装的系统上,这这通常是通过在/var目录中创建到/tmp目录的链接来完成的。
为了使/var/tmp目录认为/var/tmp目录存在(实际上不存在),某些应用程序会保存一些临时文件。
在此目录中。
要将所有临时文件保留在一个位置,可以使用ln命令在/var目录中创建指向/tmp目录的链接:
#ln-s/tmp/var/tmp
将来,如果应用程序尝试将一些临时文件放入/var/tmp中,那么它实际上将存储在/tmp目录中,因为/var/tmp只是一个符号链接。
Linux系统5种不同类型Shell命令及使用示例
如果您正在寻求对Linux系统的全面控制,命令行界面(CLI)是一个重要的工具。为了提高您的Linux使用技能,掌握各种shell命令以及如何在终端中使用它们非常重要。
本文将向您介绍Linux中五种不同类型的shell命令:可执行程序、Linux别名、shell保留字、shell函数和Linux内置命令,以便您能够高效地使用它们。
首先,程序的可执行文件(文件系统命令)是基础。
Linux在$PATH环境变量目录中查找特定命令的可执行文件。
例如,按顺序查找/usr/bin目录下的命令并执行。
别名是通过shell的内置Alias命令创建的命令的自定义简化版本。
例如,创建一个新别名并将其添加到.bashrc以使其永久化。
在shell编程中,if、then、for等保留字具有特殊含义。
通过type命令可以查看所有关键字。
Shell函数是命令的集合,它执行一系列命令,以方便执行脚本任务。
pwd、cd等内置命令可直接在shell中使用,无需搜索文件系统。
如果你理解并熟练使用这些类型的命令,你就会熟悉Linux系统。
通过练习和理解这些概念,您将更深入地了解Linux命令的多样性和功能。