Linux系统编程 15 其他命令

本文介绍了Linux高级编程中的用户管理技巧,如who、whoami、ps、jobs、top、passwd、sudo、umask、man等实用命令的使用,以及密码设置、用户切换和删除、网络配置、进程控制和环境变量查看等内容。

Linux高级编程 15
学习笔记

其他命令
who命令
查看当前在线上的用户情况。所有的选项都是可选的,
不使用任何选项时,who命令将显示一下三个内容

login name: 登录用户名
terminal line:使用终端设备
login time:登录到系统的时间

$who
ubuntu   :0           2021-12-04 17:23 (:0)
ubuntu   pts/4        2021-12-04 17:28 (:0)

切换到root
$su root
Password: 
$who
ubuntu   :0           2021-12-04 17:23 (:0)
ubuntu   pts/4        2021-12-04 17:28 (:0)


whoami 命令
查看用户所

ps aux |grep 过滤内容

8.3  jobs
用来显示当前shell下正在运行哪些作业(即后台作业)


$cat
hello
hello


$cat &   //取地址符表示在后台运行cat命令
[3] 3374

$jobs
[1]   Stopped                 cat
[2]-  Stopped                 cat
[3]+  Stopped                 cat

其中 1 2 3 表示作业号

fg [job...]
把指定的后台作业或挂起作业移到前台运行。
参数job是一个或多个的进程ID PID,或者是命令名称
或者是作业号(作业号前要加%)

bg [job...]
把被挂起的进程提到后台执行。其中,job是一个或多个进程的PID,
命令名称或者作业号(作业号前要加%)

ctrl + z
挂起当前进程
发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程,而并
非结束进程,用户可以使用使用fg/bg操作恢复执行前台或后台的进程。fg命令在前台恢复执行被挂起的进
程,此时可以使用ctrl-z再次挂起该进程,bg命令在后台恢复执行被挂起的进程,而此时将无法使用ctrl-z
再次挂起该进程


ctrl+c
重新执行
发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行;

vim /etc/passwd
messagebus:x:102:105::/var/run/dbus:/bin/false
用户名:密码:UID:GID:用户说明:家目录:解释器


kill 命令

kill 进程ID
Linux kill 命令用于删除执行中的程序或工作。

kill 可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。
若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或 jobs 指令查看。


$ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.2  0.0  34040  3340 ?        Ss   17:20   0:05 /sbin/init


kill -l

使用 kill -l 命令列出所有可用信号。


最常用的信号是:

1 (HUP):重新加载进程。
9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。

命令格式:

kill[参数][进程号]

发送指定的信号到相应进程。
1.发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。
2.如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,


彻底杀死进程

命令:

kill –9 PID
kill -9 $(ps -ef | grep 进程名) 


在bash中,$( )与` `(反引号)都是用来作命令替换的。
命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,
然后将其结果替换出来,再重组成新的命令行。


env命令
查看环境变量
$echo $SHELL
/bin/bash
其中SHELL表示环境变量,$符表示吧环境变量取出来

$env
XDG_VTNR=7
XDG_SESSION_ID=c2
CLUTTER_IM_MODULE=xim
SELINUX_INIT=YES
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ubuntu
SESSION=ubuntu
GPG_AGENT_INFO=/run/user/1000/keyring-AQKjzi/gpg:0:1
TERM=xterm
SHELL=/bin/bash
XDG_MENU_PREFIX=gnome-
VTE_VERSION=3409
WINDOWID=29360139
UPSTART_SESSION=unix:abstract=/com/ubuntu/upstart-session/1000/2458
GNOME_KEYRING_CONTROL=/run/user/1000/keyring-AQKjzi
GTK_MODULES=overlay-scrollbar:unity-gtk-module
USER=ubuntu
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
SSH_AUTH_SOCK=/run/user/1000/keyring-AQKjzi/ssh
SESSION_MANAGER=local/ubuntu:@/tmp/.ICE-unix/2629,unix/ubuntu:/tmp/.ICE-unix/2629
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
DESKTOP_SESSION=ubuntu
QT_IM_MODULE=ibus
QT_QPA_PLATFORMTHEME=appmenu-qt5
JOB=dbus
PWD=/home/ubuntu
JAVA_HOME=/usr/lib/jvm/jdk1.8.0_271/
XMODIFIERS=@im=ibus
GNOME_KEYRING_PID=2453
LANG=en_US.UTF-8
GDM_LANG=en_US
MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path
IM_CONFIG_PHASE=1
COMPIZ_CONFIG_PROFILE=ubuntu
GDMSESSION=ubuntu
SESSIONTYPE=gnome-session
XDG_SEAT=seat0
HOME=/home/ubuntu
SHLVL=1
LANGUAGE=en_US
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=ubuntu
COMPIZ_BIN_PATH=/usr/bin/
XDG_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/
QT4_IM_MODULE=xim
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-pC1s9gNJE4
LESSOPEN=| /usr/bin/lesspipe %s
INSTANCE=
TEXTDOMAIN=im-config
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0
XDG_CURRENT_DESKTOP=Unity
GTK_IM_MODULE=ibus
LESSCLOSE=/usr/bin/lesspipe %s %s
TEXTDOMAINDIR=/usr/share/locale/
COLORTERM=gnome-terminal
XAUTHORITY=/home/ubuntu/.Xauthority
_=/usr/bin/env


想直接看SHELL的环境变量的值
$env |grep SHELL
SHELL=/bin/bash


top 命令
文字版的任务管理器

$top
iB Swap:        0 total,        0 used,        0 free.   871036 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
  1465 root      20   0  325176  55876  18348 S  20.3  0.7   1:01.70 Xorg       
  3651 ubuntu    20   0  645328  19232  12804 S   6.5  0.2   0:10.02 gnome-ter+ 
  2831 ubuntu    20   0 1096068  73664  38548 S   4.9  0.9   1:17.65 compiz    


设置密码
sudo passwd 用户


$cd /home
$ls 
conf  fmc  log  root  ubuntu  update  userspace  wangwu
$sudo passwd ubuntu
[sudo] password for ubuntu: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
$sudo passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully


切换用户
sudo su 用户
注意linux学习不要经常是使用root用户


删除用户
userdel -r 用户名
-r表示主目录一起删除
$ls
conf  fmc  log  root  songweibin  ubuntu  update  userspace
$sudo userdel  -r songweibin
userdel: songweibin mail spool (/var/mail/songweibin) not found
$ls
conf  fmc  log  root  ubuntu  update  userspace

ifconfig
查看网卡信息

$ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:18:c6:94  
          inet addr:192.168.214.128  Bcast:192.168.214.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe18:c694/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2632 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1777 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:254642 (254.6 KB)  TX bytes:190804 (190.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:204 errors:0 dropped:0 overruns:0 frame:0
          TX packets:204 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:25438 (25.4 KB)  TX bytes:25438 (25.4 KB)
          
ip地址为192.168.214.128


ping 命令
ping 主机名/ip地址
$ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39: icmp_seq=1 ttl=128 time=49.1 ms
64 bytes from 14.215.177.39: icmp_seq=2 ttl=128 time=22.1 ms
64 bytes from 14.215.177.39: icmp_seq=3 ttl=128 time=81.6 ms
64 bytes from 14.215.177.39: icmp_seq=4 ttl=128 time=22.3 ms
64 bytes from 14.215.177.39: icmp_seq=5 ttl=128 time=27.0 ms


man 命令
man man

1   Executable programs or shell commands                  //可执行文件和shell命令
2   System calls (functions provided by the kernel)        //系统调用
3   Library calls (functions within program libraries)     //库函数
4   Special files (usually found in /dev)                  //
5   File formats and conventions eg /etc/passwd            //文件和规范
6   Games
7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8   System administration commands (usually only for root)
9   Kernel routines [Non standard]


$man printf
输出  PRINTF(1)  中的1,代表可执行程序和shell命令,不是我们想查
的c语言的库函数
PRINTF(1)                                                                                     User Commands                                                                                     PRINTF(1)

NAME
       printf - format and print data
       
查看c语言库函数   
$man  3 printf 


后面我们要学习的linux的系统调用
要用2(系统调用)
       
PRINTF(3)                                                                               Linux Programmer's Manual                                                                               PRINTF(3)

NAME
       printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion

SYNOPSIS
       #include <stdio.h>


我们一定要记住1 2 3各代表什么


注意:第五卷也挺有用的
比如老是记不住/etc/passwd 各个字段的含义

$passwd 5 passwd


PASSWD(5)                                                                              File Formats and Conversions                                                                             PASSWD(5)

NAME
       passwd - the password file

DESCRIPTION
       /etc/passwd contains one line for each user account, with seven fields delimited by colons (“:”). These fields are:

       ·   login name

       ·   optional encrypted password

       ·   numerical user ID

       ·   numerical group ID

       ·   user name or comment field

       ·   user home directory

       ·   optional user command interpreter
       
       
总结下:
man 用户手册第一卷:shell命令 可执行文件
man 用户手册第二卷:系统调用
man 用户手册第三卷:库函数
man 用户手册第五卷:文件和规范


clear 清屏命令
也可以ctrl+ l 清屏
非常有用,再文字很多的且显示不完的时候,
,使用ctrl+l可以直接清屏


dos下是cln

alias 命令
别名

shell 解释器的命令都在bin目录下
$ls /bin
$ls /bin
bash          bzless  dbus-cleanup-sockets  egrep         gzexe     lesspipe    more           ntfs-3g           ntfsmftalloc             pwd                   setupcon    touch            ypdomainname
bunzip2       bzmore  dbus-daemon           false         gzip      ln          mount          ntfs-3g.probe     ntfsmove                 rbash                 sh          true             zcat
busybox       cat     dbus-uuidgen          fgconsole     hostname  loadkeys    mountpoint     ntfs-3g.secaudit  ntfstruncate             readlink              sh.distrib  udevadm          zcmp
bzcat         chacl   dd                    fgrep         ip        login       mt             ntfs-3g.usermap   ntfswipe                 red                   sleep       ulockmgr_server  zdiff
bzcmp         chgrp   df                    findmnt       kbd_mode  loginctl    mt-gnu         ntfscat           open                     rm                    ss          umount           zegrep
bzdiff        chmod   dir                   fmc_cldc_cli  keyctl    lowntfs-3g  mv             ntfsck            openvt                   rmdir                 static-sh   uname            zfgrep
bzegrep       chown   dmesg                 fmc_cldc_srv  kill      ls          nano           ntfscluster       pidof                    rnano                 stty        uncompress       zforce
bzexe         chvt    dnsdomainname         fuser         kmod      lsblk       nc             ntfscmp           ping                     running-in-container  su          unicode_start    zgrep
bzfgrep       cp      domainname            fusermount    less      lsmod       nc.openbsd     ntfsdump_logfile  ping6                    run-parts             sync        vdir             zless
bzgrep        cpio    dumpkeys              getfacl       lessecho  mkdir       netcat         ntfsfix           plymouth                 sed                   tailf       vmmouse_detect   zmore
bzip2         dash    echo                  grep          lessfile  mknod       netstat        ntfsinfo          plymouth-upstart-bridge  setfacl               tar         which            znew
bzip2recover  date    ed                    gunzip        lesskey   mktemp

date命令:
查看当前时间:
$date
Sat Dec  4 19:16:39 CST 2021


查看别名
$alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias cman='man -M /usr/share/man/zh_CN'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

起别名:

$alias pg='ps aux |grep'
再次查看别名的信息:
$alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias cman='man -M /usr/share/man/zh_CN'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
alias pg='ps aux |grep'


从中可以发现中文的man手册的别名 cman

cman printf

PRINTF(1)                             FSF                            PRINTF(1)

NAME
       printf - 格式化并显示数据
       

date 命令
显示系统时间

echo
echo 【-n】 字符串


在方括号内的表达式(“[” 和 “]”之间的字符)是可选的(写命令时要去掉括号)。
在尖括号内的表达式(“<” 和 “>”之间的字符)是必须替换的表达式(而且要去掉括号)。
省略号表示该选项可以单个或多个

umask
指定用户创建文件时的掩码
掩码:白话来说就是屏蔽码

$pwd
/home/ubuntu/code/test
$ls
$touch file
$ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Dec  4 19:34 file


权限用数字表示的话664 
全的时候应该是777

但是操作系统不认为新touch出来的文件具备执行能力
所以默认会把文件执行权限去掉
所以掩码为002
查看当前掩码确认下:
$umask
0002

002-> 775 (775+002 = 777)->系统不认为有执行权限 ->664

注意第一个0 表示八进制

修改掩码
umask 522  
522 777 255 所以w- rx-rx
因为系统不认为有执行权限 还是w-r-r
$umask 522
$touch file2
$ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 Dec  4 19:34 file
--w-r--r-- 1 ubuntu ubuntu 0 Dec  4 19:45 file2


创建终端
ctrl+ alt + t

在终端里面呼出 一个终端
ctrl+shift + t
多页之间的切换
alt+1 alt+2 ...

目的:linux程序员可以摒弃鼠标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值