This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
tech:unix:start [2015/03/28 14:35] rk4n3 |
tech:unix:start [2018/11/25 16:11] (current) rk4n3 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Technical UNIX Topics ====== | + | <typo fs:xx-large; fw:bold>UNIX Topics</typo> |
- | A {{:tech:unix:dot-kshrc-sample.txt|sample ''.kshrc'' file}} | + | [[tech:unix:solaris:start|Solaris topics]] |
+ | |||
+ | ====== Troubleshooting Topics ====== | ||
+ | ===== Troubleshooting SSH ===== | ||
+ | Start an SSH daemon in debug mode:<code>/usr/sbin/sshd -d -p 2222</code> | ||
+ | Connect with client in verbose mode:<code>ssh -vv -p 2222 ServerIP</code> | ||
+ | |||
+ | ------ | ||
+ | ====== AIX Topics ====== | ||
+ | |||
+ | ==== AIX Kernel Lock Table - Front-Loading Overhead ==== | ||
+ | If fcntl is used to aquire locks on files without utilization of the range/region parameters, file locks are aquired without an offset, which has the side-effect of the lock entry being inserted at the beginning of the kernel's lock table. | ||
+ | |||
+ | Interestingly, if an application relies on intensive utilization of such file locking, the overhead of unconditional traversal of the potentially over-sized set of lock entries crowded into the front of the lock table can be quite impactful. | ||
+ | |||
+ | In one particular application, file locks acquired via fcntl was used for IPC-oriented synchronization in addition to actual concurrent file access, which introduced the overhead from kernel lock table front-loading to the application's multi-threaded processing concurrency - and the problem was also aggrevated by the addition IPC-oriented lock volume, as well. | ||
+ | |||
+ | One mitigation technique would be to utilize the region/range parameters for fcntl, locking a region at an arbitrarily-high position, which has the side-effect of the lock entry being located away from the front of the lock table. | ||
+ | |||
+ | ------ | ||
+ | ====== Sample config files ====== | ||
+ | ==== .kshrc ==== | ||
+ | This sample ''.kshrc'' {{:tech:unix:dot-kshrc-sample.txt|file}} is typically paired with a ''.profile'' containing simply:<code sh>export ENV=${HOME}/.kshrc</code> | ||
+ | |||
+ | ==== .twmrc ==== | ||
+ | <code> | ||
+ | # A .twmrc file personalized by rk4n3 | ||
+ | UsePPosition on | ||
+ | RandomPlacement | ||
+ | NoGrabServer | ||
+ | OpaqueMove | ||
+ | RestartPreviousState | ||
+ | DecorateTransients | ||
+ | #ClientBorderWidth | ||
+ | #NoDefaults | ||
+ | |||
+ | TitleFont "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" | ||
+ | ResizeFont "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" | ||
+ | MenuFont "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" | ||
+ | IconFont "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" | ||
+ | IconManagerFont "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" | ||
+ | |||
+ | Color { | ||
+ | DefaultBackground "rgb:0/0/0" | ||
+ | DefaultForeground "rgb:F/F/F" | ||
+ | BorderColor "rgb:C/C/4" | ||
+ | TitleBackground "rgb:3/3/3" | ||
+ | TitleForeground "rgb:C/A/0" | ||
+ | MenuBackground "rgb:2/2/2" | ||
+ | MenuForeground "rgb:C/A/0" | ||
+ | MenuBorderColor "rgb:F/F/0" | ||
+ | MenuTitleBackground "rgb:4/4/4" | ||
+ | MenuTitleForeground "rgb:F/F/0" | ||
+ | IconBackground "rgb:4/4/4" | ||
+ | IconForeground "rgb:C/A/0" | ||
+ | IconBorderColor "rgb:4/4/4" | ||
+ | IconManagerBackground "rgb:4/4/4" | ||
+ | IconManagerForeground "rgb:C/C/4" | ||
+ | } | ||
+ | |||
+ | NoTitle { "stalonetray" } | ||
+ | |||
+ | # Define some useful functions for motion-based actions. | ||
+ | MoveDelta 3 | ||
+ | Function "move-or-lower" { f.move f.deltastop f.lower } | ||
+ | Function "move-or-raise" { f.move f.deltastop f.raise } | ||
+ | Function "move-or-iconify" { f.move f.deltastop f.iconify } | ||
+ | |||
+ | # Set some useful bindings. Sort of uwm-ish, sort of simple-button-ish | ||
+ | #LeftTitleButton ":iconify" = f.iconify | ||
+ | #RightTitleButton ":resize" = f.resize | ||
+ | |||
+ | Button1 = : root : f.menu "MainMenu" | ||
+ | |||
+ | Button1 = m : window|icon : f.function "move-or-lower" | ||
+ | Button2 = m : window|icon : f.iconify | ||
+ | Button3 = m : window|icon : f.function "move-or-raise" | ||
+ | |||
+ | Button1 = : title : f.function "move-or-raise" | ||
+ | Button2 = : title : f.raiselower | ||
+ | Button3 = : title : f.menu "simplewinops" | ||
+ | |||
+ | Button1 = : icon : f.function "move-or-iconify" | ||
+ | Button2 = : icon : f.iconify | ||
+ | |||
+ | Button1 = : iconmgr : f.iconify | ||
+ | Button2 = : iconmgr : f.iconify | ||
+ | |||
+ | # | ||
+ | # And a menus with the usual things | ||
+ | # | ||
+ | menu "winops" { | ||
+ | "Iconify" f.iconify | ||
+ | "Resize" f.resize | ||
+ | "Move" f.move | ||
+ | "Raise" f.raise | ||
+ | "Lower" f.lower | ||
+ | "-------------" f.nop | ||
+ | "Focus" f.focus | ||
+ | "Unfocus" f.unfocus | ||
+ | "Show Iconmgr" f.showiconmgr | ||
+ | "Hide Iconmgr" f.hideiconmgr | ||
+ | "-------------" f.nop | ||
+ | "Kill" f.destroy | ||
+ | "Delete" f.delete | ||
+ | "Lower" f.lower | ||
+ | } | ||
+ | |||
+ | menu "simplewinops" { | ||
+ | "Lower" f.lower | ||
+ | "Close" f.delete | ||
+ | "Kill" f.destroy | ||
+ | } | ||
+ | |||
+ | menu "tools" { | ||
+ | "Edit .twmrc" f.exec "exec gvim ~/.twmrc &" | ||
+ | "Restart TWM" f.restart | ||
+ | "-------------" f.nop | ||
+ | "Window..." f.menu "winops" | ||
+ | "=============" f.nop | ||
+ | "Exit TWM" f.quit | ||
+ | } | ||
+ | |||
+ | menu "MainMenu" { | ||
+ | "rk4n3@darkstar" f.title | ||
+ | "Terminal" f.exec "exec terminator &" | ||
+ | "File Manager" f.exec "exec xfe &" | ||
+ | "-------------" f.nop | ||
+ | "Tools" f.menu "tools" | ||
+ | "Close window..." f.delete | ||
+ | "-------------" f.nop | ||
+ | "Geeqie" f.exec "exec geeqie &" | ||
+ | "Open Office" f.exec "exec soffice &" | ||
+ | "Firefox" f.exec "firefox &" | ||
+ | } | ||
+ | </code> | ||