高级shell命令

高级命令

用户

/etc/passwd并不是一个用来保存密码的文件,而是用来保存用户信息的文件。保存密码的是/etc/shadow
/etc/passwd的字段包括:登录用户名、用户密码、用户UID、用户的组ID、备注、HOME目录的位置和默认shell。
千万不要直接修改/etc/passwd文件,改崩了可能连root用户都登不了系统。要使用专用的命令来更改用户设置。

useradd: 创建一个新用户

useradd [options]login: 以options中的设置创建新用户login

useradd -D: 显示默认设置的内容

useradd -D [options]: 修改默认设置的内容

参数描述
-c comment给新用户添加备注
-dhome-dir指定主目录的名字(如果不想用登录名作为主目录名的话)
-eexpire-date用YYYY-MM-DD的格式指定一个账户过期的日期
-ginitial-group指定用户登录组的gid或组名
-m创建用户的主目录
-M不创建用户的主目录
-p指定账户默认的密码
-sshell指定默认的登录shell
-uuid指定uid

adduser: 交互式添加用户
useradd好用,不容易出问题。

userdel: 删除用户
默认情况下,userdel只会删除/etc/passwd文件中的用户信息,而不会删除系统中属于该账户的任何文件。
使用-ruserdel会删除用户的HOME目录以及邮件目录

usermod: 修改用户账户的字段。

参数描述
-ccomment修改备注字段
-e date修改过期时间
-g group修改登录组
-l name修改登录名
-L锁定用户
-U解锁
-p passwd修改账户的密码

passwd: 修改密码

chpasswd: 批量修改密码

chsh: 修改用户登录shell

/etc/group文件中保存了每个组的信息,包括:组名、组密码、组ID和属于该组的用户列表。
组密码用于使非组内成员临时成为该组成员。用户列表中不一定列出了所有组内成员。当一个用户在/etc/passwd文件中指定某个组作为默认组是,该用户账户不会再出现在/etc/group中。
/etc/passwd,不要直接用编辑器改这个文件。

groupadd: 创建新组

groupmod: 修改已有组的字段

注意:把一个用户添加到一个组中使用usermod -aGgroups...命令,没有对应的groupmod命令。

文件权限

ls -l输出的结果的第一个字段就是描述文件和目录权限的编码。
- -代表文件
- d代表目录
- l代表链接
- c代表字符形设备
- b代表块设备
- n代表网络设备
之后三组三字符编码分别对应文件的属主、属组和其他用户的访问权限
- r代表可读
- w代表可写
- x代表可执行。对于文件夹,可读意味着可以读取文件目录项,即可以知道该目录下的内容;可执行意味着,可以访问目录下的文件。

umask: 显示或设置新建文件和目录的默认权限屏蔽字

每组rwx可以看成一个八进制数字。普通文件的自然权限是6,即可读可写不可执行;目录的自然权限是7,可读可写可执行。权限屏蔽字就是创建的文件需要屏蔽的权限。
比如,mask为002时,新建的文件其他用户没有写权限。

chmod: 改变文件的权限
- chmodoptions mode file
mode参数可以使用八进制值或者符号模式进行描述。
符号模式:[ugoa...][+-=][rwxXstugo...]。第一组字符定义了权限作用的对象:u代表用户、g代表组、o代表其他、a代表全部;下一步表示你是想要在现有的权限上增加权限(+),还是移除权限(-),或是将权限设置成后面的值(=);第三个符号代表作用到设置上的权限:
- X: 如果对象是目录或者它已有执行权限,赋予执行权限。
- s: 运行时重新设置UID或GID
- t: 保留文件或目录
- u: 将权限设置为跟属主一样
- g: 将权限设置为跟属组一样
- o: 将权限设置为更其他用户一样

chown: 改变文件的属主
chownoptions owner[:[group]] file
可以用登录名或者UID来指定文件的属主。

文件系统

文件系统建立在磁盘分区上,一个物理存储设备可以划分成一个或者多个分区,分区可视为存储子设备。
存储设备首部建有分区表,用来描述该存储器上的分区划分。

fdisk: 用来管理存储设备上的分区

交互命令:

  • n: 新建分区
  • p: 列出分区表
  • w: 将改动写入磁盘
  • d: 删除一个分区

mkfs: 在分区上创建文件系统, 创建文件系统命令有多种:mkfs.e2fsmkfs.ext2mkfs.vfat等等。

软件管理

apt:

dpkg:

作业控制

在命令后面加&,把命令放到后台作为一个独立的进程运行。shell会显示分配的作业号和进程号。当进程在后台运行时,它仍然使用终端的显示器来显示STDOUT和STDERR的信息。在终端会话中使用后台进程时,每一个后台进程都和终端会话连接在一起。如果终端会话退出,那么后台进程也会退出。

nohup command&

如果想要在终端会话中启动脚本,然后让脚本一直在后台模式运行到结束,即使推出了终端,这可以通过nohup命令来实现。nohup命令运行了另外一个命令来阻断所有发送给该进程的SIGHUP信号。这会在退出终端会话时阻止进程退出。由于nohup命令会解除终端与进程的关联,进程也不再同STDOUTSTDERR联系在一起,为了保存该命令产生的输出,nohup会自动将STDOUTSTDERR的信息重定向到一个名为nohup.out的文件中。

jobs命令可以查看后台的作业。
bg job-number命令可以把暂停的作业放到后台运行
fg job-number命令可以把暂停的作业放到前台运行

nice: 设置命令启动时的优先级

  • nice [option] [command [arg]...]

优先级取值从-2019,默认情况下,bash shell以优先级0来启动进程。设置正优先级需要管理员权限。

  • -n N: 执行优先级

renice: 改变正在运行的进程的优先级。

  • renice [-n] priority [-g|-p|-u] identifier...

和nice命令类似,降低优先级不需要管理员权限,提高优先级需要管理员权限。

  • -n prior: 指定优先级
  • -g: 跟着的参数为组id,改变该组进程的优先级
  • -p: 跟着的参数为Pid,改变该进程的优先级
  • -u: 跟着的参数为uid,改变该用户进程的优先级

·at: 计划执行作业

  • at [-f filename] time

at命令允许指定Linux系统何时运行脚本。at命令会将作业提交到队列中,指定shell何时运行该作业。at的守护进程atd会以后台模式运行,检查作业队列来运行作业。

  • -f filename: 指定作业的命令脚本。缺省时从stdin输入。
  • time: 指定何时运行作业。可以使用多种格式:
    • HH:MM 每天的HH时MM分运行
    • midnight,noon,teatime(4pm)
    • month-name day 指定某天
    • MM/DD/[CC]YY
      • count-time-units
        当作业运行时,显示器并不会关联到该作业。linux会将提交该作业的用户的电子邮件地址作为STDOUT和STDERR。因此使用at命令时最好以用重定向输出到文件中。

atq: 列出系统中等待的作业

atrm: 删除等待队列中的作业

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值